よもやまチョモランマ

『Contact Form 7』のラジオボタンをカスタマイズ

メールフォームが簡単に設置できるプラグイン「コンタクトフォーム7」
今回、カスタマイズに少々手こずったので備忘録。

原因は、他ページで「タブ」切り替えデザインに「input type=”radio”」を使ってしまったせいでした。
それはそれで苦労して実装したので、こちらも参考ページを載せておきましょう。
【参考】簡単なタブ切り替え機能の実装

ここで、ラジオボタンを非表示にしてしまったが故に、「お問い合わせページで、まずは『用件』を選ばせたい」という要求に、ラジオボタンを使おうにも、肝心のボタンが表示されなくなってしまったのですね。

セレクトかチェックボタンでもいいか?とも思いましたが。
スマホでセレクトは面倒くさいし、項目が最初に見えないので、SEO的にNG。
チェックボタンは、両方選んだり選ばなかったりできるんだから、振り分けにならない。

どっちかにIDかクラスつければCSSで何とかなると軽く考えていたのですが、何故かうまくいかなくて・・・

それどころか、『Contact Form 7』でラジオボタン作るだけでエラー。
デフォルトでエラーって・・・と思ったら、ガッコーで教わったままに<lavel>で囲っていたせいでした。
これも、想定外の苦労を強いられたので、載せておきましょう。
【参考】チェックボックス、ラジオボタン、メニュー

「use_label_element」を推奨するわりには、「個々の項目をlavel要素で囲む」にチェック入れて生成しないとそれにならないという罠。

で、今回の、救世主がこちら。
【参考】CSSでラジオボタンをカスタマイズする方法

デフォルトで「use_label_element」つけたラジオボタンに、以下のCSSを当てただけでイケました。

input[type=radio] {display: none;}
.wpcf7-list-item-label {
	position: relative;
	padding: 0 20px 0 25px;
}
.wpcf7-list-item-label:after,  .wpcf7-list-item-label:before {
	position: absolute;
	content: "";
	display: block;	
	top: 50%;
}
.wpcf7-list-item-label:after {
	margin-top: -10px;
	width: 16px;
	height: 16px;
	border: 2px solid #ccc;
	border-radius: 50%;
}
.wpcf7-list-item-label:before {
	left: 5px;
	margin-top: -5px;
	width: 10px;
	height: 10px;
	background: #2889c2;
	border-radius: 50%;
	opacity: 0;
}
input[type=radio]:checked + .wpcf7-list-item-label:before {
	opacity: 1;
}
.wpcf7-list-item-label:hover:after {
	border-color: #2889c2;
}

文字までエリアになってるし、丸の大きさも変えられるので、モバイルファーストにもってこいです。