新しいホームページを作る機会があると、必ずと言って良いほど必要になるのが問い合わせフォームです。今までなぜか毎回、手作業でスタイルシートを作って来たのですが、さすがにこういうものは雛形が欲しいなと思いデザインをコピペできるようにしてみました。ここでは、お問合せのプラグイン「Contact Form 7」で出力されるフォームをキレイに整えるスタイルシートをご紹介します。
Contact Form 7のフォームを整えるスタイルシート
まず、前提としてここではお問合せフォームをテーブルで組む必要がありますので、仮に下記のような形でフォームを作成した場合の前提で話を進めていきます。
コンタクトフォームの編集コード
<
td
>[text* your-name]</
td
>
<
td
>[email* your-email]</
td
>
<
td
>[number your-number]</
td
>
<
td
>[select item-select "アイテム1" "アイテム2" "アイテム3"]</
td
>
<
td
>[checkbox item-checkbox use_label_element "アイテム1" "アイテム2" "アイテム3"]</
td
>
<
td
>[radio item-radio use_label_element default:1 "アイテム1" "アイテム2" "アイテム3"]</
td
>
<
td
>[file your-file]</
td
>
<
td
>[text your-subject]</
td
>
<
td
>[textarea your-message]</
td
>
[acceptance confirmation optional]承認確認する[/acceptance]
ここでは一般的に使いそうなタグは入れておきましたが、「クイズ」は使ったことがないので省略させていただきました。下記が実際に表に表示されるフォームです。
※↓このサイトのスタイルが適用されてしまっているので、条件によって見た目は変わります。
承認確認する
余談になりますが、チェックボックスとラジオボタンを作成するときは、「個々の項目を label 要素で囲む」にチェックを入れると、ラベルをクリックで選択ができるようになるのでユーザービリティが向上します。初期設定ではチェックが入っていませんので気をつけてくださいね。
そして、生成されたHTMLがこちらです。
HTML
<
td
><
span
class
=
"wpcf7-form-control-wrap your-name"
><
input
type
=
"text"
name
=
"your-name"
value
=
""
size
=
"40"
class
=
"wpcf7-form-control wpcf7-text wpcf7-validates-as-required"
aria-required
=
"true"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap your-tel"
><
input
type
=
"tel"
name
=
"your-tel"
value
=
""
size
=
"40"
class
=
"wpcf7-form-control wpcf7-text wpcf7-tel wpcf7-validates-as-required wpcf7-validates-as-tel"
aria-required
=
"true"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap your-email"
><
input
type
=
"email"
name
=
"your-email"
value
=
""
size
=
"40"
class
=
"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email"
aria-required
=
"true"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap website"
><
input
type
=
"url"
name
=
"website"
value
=
""
size
=
"40"
class
=
"wpcf7-form-control wpcf7-text wpcf7-url wpcf7-validates-as-url"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap your-number"
><
input
type
=
"number"
name
=
"your-number"
value
=
""
class
=
"wpcf7-form-control wpcf7-number wpcf7-validates-as-number"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap birthday"
><
input
type
=
"date"
name
=
"birthday"
value
=
""
class
=
"wpcf7-form-control wpcf7-date wpcf7-validates-as-date"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap item-select"
><
select
name
=
"item-select"
class
=
"wpcf7-form-control wpcf7-select"
aria-invalid
=
"false"
><
option
value
=
"アイテム1"
>アイテム1</
option
><
option
value
=
"アイテム2"
>アイテム2</
option
><
option
value
=
"アイテム3"
>アイテム3</
option
></
select
></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap item-checkbox"
><
span
class
=
"wpcf7-form-control wpcf7-checkbox"
><
span
class
=
"wpcf7-list-item first"
><
label
><
input
type
=
"checkbox"
name
=
"item-checkbox[]"
value
=
"アイテム1"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム1</
span
></
label
></
span
><
span
class
=
"wpcf7-list-item"
><
label
><
input
type
=
"checkbox"
name
=
"item-checkbox[]"
value
=
"アイテム2"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム2</
span
></
label
></
span
><
span
class
=
"wpcf7-list-item last"
><
label
><
input
type
=
"checkbox"
name
=
"item-checkbox[]"
value
=
"アイテム3"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム3</
span
></
label
></
span
></
span
></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap item-radio"
><
span
class
=
"wpcf7-form-control wpcf7-radio"
><
span
class
=
"wpcf7-list-item first"
><
label
><
input
type
=
"radio"
name
=
"item-radio"
value
=
"アイテム1"
checked
=
"checked"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム1</
span
></
label
></
span
><
span
class
=
"wpcf7-list-item"
><
label
><
input
type
=
"radio"
name
=
"item-radio"
value
=
"アイテム2"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム2</
span
></
label
></
span
><
span
class
=
"wpcf7-list-item last"
><
label
><
input
type
=
"radio"
name
=
"item-radio"
value
=
"アイテム3"
/><
span
class
=
"wpcf7-list-item-label"
>アイテム3</
span
></
label
></
span
></
span
></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap your-subject"
><
input
type
=
"text"
name
=
"your-subject"
value
=
""
size
=
"40"
class
=
"wpcf7-form-control wpcf7-text"
aria-invalid
=
"false"
/></
span
></
td
>
<
td
><
span
class
=
"wpcf7-form-control-wrap your-message"
><
textarea
name
=
"your-message"
cols
=
"40"
rows
=
"10"
class
=
"wpcf7-form-control wpcf7-textarea"
aria-invalid
=
"false"
></
textarea
></
span
></
td
>
<
p
><
span
class
=
"wpcf7-form-control-wrap confirmation"
><
span
class
=
"wpcf7-form-control wpcf7-acceptance optional"
><
span
class
=
"wpcf7-list-item"
><
label
><
input
type
=
"checkbox"
name
=
"confirmation"
value
=
"1"
aria-invalid
=
"false"
/><
span
class
=
"wpcf7-list-item-label"
>承認確認する</
span
></
label
></
span
></
span
></
span
></
p
>
<
p
><
input
type
=
"submit"
value
=
"送信"
class
=
"wpcf7-form-control wpcf7-submit"
/></
p
>
そして、このフォームにスタイルシートを適用させたものが下記になります。
ボタンで表示を切り替えてご覧ください。
CSS
border-collapse
:
collapse
;
table.contact td input[type=
"text"
],
table.contact td input[type=
"tel"
],
table.contact td input[type=
"email"
],
table.contact td input[type=
"url"
],
table.contact td input[type=
"number"
],
table.contact td input[type=
"date"
],
textarea.wpcf
7
-form-control.wpcf
7
-textarea {
.wpcf
7
-form-control.wpcf
7
-acceptance{
table.contact th.required::after{
@media
screen
and (
max-width
:
600px
) {
上記はもちろん、スマホにも対応させてあります。
javascript
jQuery(
'.wpcf7-validates-as-required'
).parents(
'td'
).prev(
'th'
).addClass(
'required'
);
さらに、必須項目がある場合は項目名のところに自動で「必須」と表示されるようにjQueryのコードも作りました。
以上が、Contact Form 7のフォームを整えるスタイルシートでした。