ちょっと変わった形状のチェックボックスを自作する機会があったので、忘備録としてまとめておきます。
今回、自作することになったチェックボックス
「まずは、結論から」ということで、今回自作したチェックボックスのCodePenを下に貼っておきます。コードと動作をご確認下さい。
See the Pen Untitled by Satoru Shimizu (@sat-simizu) on CodePen.
そして、下記がCSSを変えてないノーマル形状のチェックボックスです。上の例との大きな違いはチェックマークの形状です。
See the Pen Untitled by Satoru Shimizu (@sat-simizu) on CodePen.
チェックボックス自作の方法
ノーマルチェックボックスを非表示にする方法
「どうやって自作したのか?」というと、ノーマル形状のチェックボックスを消して、新たに作っています。
ノーマルのチェックボックスを非表示にするにはCSSに次のコードを書きます。
/* ノーマルチェックボックスを非表示に */
input[type="checkbox"] {
display: none;
}
HTML構造について
HTML構造は今回は簡易的なタイプを使いました。
<!-- チェックボックス全体の囲い -->
<label class="checkbox-wrapper">
<!-- チェックボックスの枠 -->
<input type="checkbox" checked="checked">
<!-- チェックボックス内のチェックマーク(通常はチェックマーク) -->
<span class="checkmark"></span>
<!-- ラベルの文字 -->
哺乳類
</label>
CSSの書き方
CSSは下のような通りです。
/* チェックボックス全体 */
.checkbox-wrapper {
display: block;
position: relative;
padding-left: 30px;
margin-top: 22px;
cursor: pointer;
font-size: 16px;
user-select: none;
}
/* チェックボックスのスタイル */
.checkbox-wrapper .checkmark {
position: absolute;
top: 0px;
left: 0px;
height: 18px;
width: 18px;
border: 1px solid #122E4F;
box-sizing: border-box;
}
/* チェックマーク作成 */
.checkbox-wrapper .checkmark:after {
content: "";
position: absolute;
display: none;
left: 4px;
top: 4px;
width: 8px;
height: 8px;
background-color: #CD3D69;
border-radius: 50%;
}
/* チェック時のスタイル */
.checkbox-wrapper input:checked + .checkmark {
border: 1px solid fw.$check-box;
}
/* チェック時 チェックマーク表示 */
.checkbox-wrapper input:checked + .checkmark:after {
display: block;
}
/* 以下、体裁を整えるためのCSS */
.container{
width: 300px;
margin: 50px auto;
}
上のCSSの要点をまとめると次のとおりです。
- チェックボックス全体のスタイルは「.checkbox-wrapper」:主にラベル(文字サイズ・行間など)の書式設定
- チェックボックス枠線のスタイルは「.checkbox-wrapper .checkmark」:チェックボックス枠線のスタイル(サイズ・色・位置など)
- チェックマークのスタイルは「.checkbox-wrapper .checkmark:after」:通常はチェックマークだが、今回は「赤い丸印」に変更、チェック前は非表示(display: none;)
- チェック時のチェックボックス枠線スタイルは「.checkbox-wrapper input:checked + .checkmark」:今回は、チェック前と同じスタイル(枠線の太さ・色)
- チェック時にチェックマーク表示するには「.checkbox-wrapper input:checked + .checkmark:after」:表示させるために「display: block;」
まとめ
以上、ちょっと変わったチェックボックスの自作の仕方を紹介しました。
- このチェックボックスのコードにはid属性、name属性、value属性が含まれていないので、送信フォームをphpで自作する場合にはもうひと工夫必要です。
- WordPress案件でContactForm7等のフォームを利用する場合についてはカスタマイズ方法を別記事にまとめています(下記参照)。