[WordPress] Contact Form 7用のスマホ対応スタイル
Contact Form 7をサッと使うためのサンプルコードです。
スマホ表示に対応したレスポンシブスタイルでフォームを実装しています。
サンプルコード
html
<div class="cf7form">
<dl class="cf7form_input">
<dt>お名前</dt>
<dd>
[text* your-name placeholder "例:山田太郎"]
</dd>
<dt>会社名</dt>
<dd>
[text* your-company placeholder "例:株式会社○○"]
</dd>
<dt>メールアドレス</dt>
<dd>
[email* your-email placeholder "例:xxx@xxx.com"]
</dd>
<dt>電話番号</dt>
<dd>
[tel* your-tel placeholder "例:1234-56-7890"]
</dd>
<dt>郵便番号</dt>
<dd>
[text your-postcode placeholder "例:123-4567"]
</dd>
<dt>ご住所</dt>
<dd>
[text your-address placeholder "例:○○県○○市○○"]
</dd>
<dt>お問い合わせ内容</dt>
<dd>
[textarea* your-message placeholder "入力してください"]
</dd>
<dt>添付ファイル</dt>
<dd>
<div class="cf7form_input_file">
<label>
[file your-file-01 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx]
<p>ファイルを選択する</p>
</label>
</div>
<div class="cf7form_input_file">
<label>
[file your-file-02 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx]
<p>ファイルを選択する</p>
</label>
</div>
<div class="cf7form_input_file">
<label>
[file your-file-03 limit:5MB filetypes:jpg|jpeg|gif|png|pdf|doc|docx|xls|xlsx]
<p>ファイルを選択する</p>
</label>
</div>
</dd>
</dl>
<div class="cf7form_policy">
<p><a href="/privacy/" target="_blank">プライバシーポリシー</a>に同意の上、送信ください。</p>
[checkbox* your-privacy use_label_element "プライバシーポリシーに同意する"]
</div>
<div class="cf7form_submit">
[submit "送信する"]
</div>
</div>
<script>
jQuery(function($) {
document.addEventListener('wpcf7mailsent', function(event) {
const siteURL = window.location.protocol + "//" + window.location.host;
setTimeout(() => {
location = siteURL + '/contact/thanks/';
}, 3000);
}, false);
$('.cf7form_input_file input[type=file]').on('change', function () {
const file = $(this).prop('files')[0];
$(this).parent().next('p').text(file.name);
});
});
</script>
<script>
jQuery(function($) {
document.addEventListener('wpcf7mailsent', function(event) {
const siteURL = window.location.protocol + "//" + window.location.host;
setTimeout(() => {
location = siteURL + '/contact/thanks/';
}, 3000);
}, false);
$('.cf7form_input_file input[type=file]').on('change', function () {
const file = $(this).prop('files')[0];
$(this).parent().next('p').text(file.name);
});
});
</script>
フォームhtmlの後に記載しているjQueryのコードでは、それぞれ下記の処理を行っています。
①フォーム送信後にサンクスページへ遷移させる
②ファイル添付時にファイル名を表示させる
※添付ファイルの項目がない場合は、②の処理は不要となります
CSS
.cf7form_input,
.cf7form_input dt,
.cf7form_input dd {
box-sizing: border-box;
}
.cf7form_input dt,
.cf7form_input dd {
margin: 0px;
}
.cf7form_input dt {
font-weight: bold;
}
.cf7form_input dd input[type="text"],
.cf7form_input dd input[type="tel"],
.cf7form_input dd input[type="email"],
.cf7form_input dd textarea {
padding: 1em;
width: 100%;
border: none;
background-color: #f7f7f7;
}
.cf7form_input dd textarea {
height: 20em;
}
.cf7form_input_file + .cf7form_input_file {
margin-top: 20px;
}
.cf7form_input_file label {
display: block;
position: relative;
padding: 1.5em 4em;
width: 90%;
max-width: 300px;
border: 1px solid #777;
border-radius: 2em;
cursor: pointer;
}
.cf7form_input_file input {
display: none;
}
.cf7form_input_file p {
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
padding: 0px 1em;
width: 100%;
text-align: center;
overflow: hidden;
}
.cf7form_policy {
padding: 2em;
margin: 30px auto 0px;
width: 90%;
max-width: 700px;
border: 1px solid #777;
text-align: center;
}
.cf7form_policy p {
margin-bottom: 1em;
}
.cf7form_policy input,
.cf7form_policy label {
cursor: pointer;;
}
.cf7form_submit {
margin-top: 30px;
text-align: center;
}
.cf7form_submit input {
padding: 0.5em 4em;
border: 2px solid #3388dd;
border-radius: 2em;
background-color: #3388dd;
outline: none;
appearance: none;
color: #fff;
font-size: 1.2em;
font-weight: bold;
cursor: pointer;
}
.cf7form_submit .wpcf7-spinner {
display: block;
margin: 10px auto 0px;
}
@media screen and (max-width: 767.98px) {
.cf7form_input dt {
padding: 1em 0px 0px 0px;
}
.cf7form_input dd {
padding: 1em 0px 1.5em;
border-bottom: 1px solid #ddd;
}
}
@media screen and (min-width: 768px) {
.cf7form_input {
display: flex;
flex-wrap: wrap;
}
.cf7form_input dt,
.cf7form_input dd {
border-bottom: 1px solid #ddd;
}
.cf7form_input dt {
display: flex;
align-items: center;
padding: 2em 1em 2em 0px;
width: 20%;
}
.cf7form_input dd {
padding: 2em 0px 2em 1em;
width: 80%;
}
}
各入力項目のデザインを整えています。
スマホ表示時には要素を縦に並べてるようにしています。
functions.php
// Contact Form 7のpタグの自動挿入を無効化
function my_wpcf7_autop_or_not() {
return false;
}
add_filter('wpcf7_autop_or_not', 'my_wpcf7_autop_or_not');
Contact Form 7の管理画面で入力したhtmlがページに出力される際、各タグにpタグが自動挿入されます。
今回指定するスタイルではこのpタグが邪魔になってしまうため、functions.phpに無効化の処理を追加します。
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。