目次
- はじめに:checkboxの見た目を変えたいと思ったことはありませんか?
- checkboxの基本構造を確認しよう
- checkboxはCSSだけで直接デザインできない?
- カスタムcheckboxの基本的な考え方
- 方法①:checkboxを非表示にする
- 方法②:見た目用のチェックボックスを作る
- 方法③:チェックされたときのデザイン
- チェックマークを表示する方法
- checkboxのサイズ・色を変える
- hover時のデザインを追加する
- checkboxデザインでよくある失敗
- アクセシビリティへの配慮
- 複数checkboxを並べる場合
- checkboxとrequiredの組み合わせ
- まとめ:checkboxは「仕組み」と「見た目」を分けて考える
はじめに:checkboxの見た目を変えたいと思ったことはありませんか?
HTMLでチェックボックスを使っていると、
- デザインがダサくて浮いてしまう
- サイトの雰囲気に合わない
- 色やサイズを変えたい
と感じたことはありませんか?
checkboxは便利な入力要素ですが、
ブラウザ標準の見た目はカスタマイズ性が低いのが難点です。
この記事では、
HTML初心者の方でも理解できるように
checkboxをCSSで自由にデザインする方法を
基礎から順番に解説します。
checkboxの基本構造を確認しよう
まずは、通常のcheckboxのHTMLです。
<label>
<input type="checkbox" name="agree">
利用規約に同意する
</label>
この状態では、
ブラウザ標準のチェックボックスが表示されます。
checkboxはCSSだけで直接デザインできない?
結論から言うと、
checkbox自体を直接デザインするのは難しいです。
input[type="checkbox"] {
background: red;
}
このような指定をしても、
ほとんどのブラウザでは見た目は変わりません。
そのため、
checkboxを非表示にして、別要素で見た目を作る
という方法が一般的です。
カスタムcheckboxの基本的な考え方
カスタムデザインは、次の流れで作ります。
- 本物のcheckboxを隠す
- 見た目用の要素を作る
- チェック状態に応じてCSSで切り替える
方法①:checkboxを非表示にする
まず、checkboxを画面から隠します。
input[type="checkbox"] {
display: none;
}
※ アクセシビリティを考慮する場合は、
完全非表示ではなく opacity を使う方法もあります。
方法②:見た目用のチェックボックスを作る
次に、疑似要素を使って見た目を作ります。
<label class="checkbox">
<input type="checkbox">
<span class="check"></span>
利用規約に同意する
</label>
.checkbox {
display: flex;
align-items: center;
cursor: pointer;
}
.checkbox .check {
width: 20px;
height: 20px;
border: 2px solid #4087bf;
border-radius: 4px;
margin-right: 8px;
}
方法③:チェックされたときのデザイン
checked状態をCSSで判定します。
.checkbox input:checked + .check {
background-color: #4087bf;
}
これで、
チェック時に背景色が変わります。
チェックマークを表示する方法
疑似要素を使うと、
チェックマークも簡単に表現できます。
.checkbox .check::after {
content: "";
display: none;
width: 6px;
height: 10px;
border: solid #fff;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
margin: 3px auto;
}
.checkbox input:checked + .check::after {
display: block;
}
checkboxのサイズ・色を変える
サイズや色は、
見た目用要素を変更するだけです。
.check {
width: 24px;
height: 24px;
border-color: #f6b7c1;
}
.checkbox input:checked + .check {
background-color: #f6b7c1;
}
サイトの配色に合わせて
自由に調整できます。
hover時のデザインを追加する
操作感を高めるために、
hover時の演出もおすすめです。
.checkbox:hover .check {
border-color: #306a99;
}
checkboxデザインでよくある失敗
初心者がつまずきやすいポイントです。
- labelで囲んでいない
- クリックしても反応しない
- チェック状態が分かりにくい
- フォーカスが当たらない
labelとinputの関連付けは必須です。
アクセシビリティへの配慮
checkboxは、
フォームの中でも重要な要素です。
- labelを必ず設定する
- 見た目だけで状態を判断させない
- キーボード操作を妨げない
デザイン性と使いやすさの
バランスを意識しましょう。
複数checkboxを並べる場合
複数ある場合は、
flexやgridで整列します。
.checkbox-group {
display: flex;
gap: 16px;
}
checkboxとrequiredの組み合わせ
同意チェックなどでは、
requiredと併用することが多いです。
<input type="checkbox" required>
未チェックの場合、
フォーム送信はブロックされます。
まとめ:checkboxは「仕組み」と「見た目」を分けて考える
HTMLのcheckboxデザインは、
- 本体はHTMLで管理
- 見た目はCSSで自由に作る
という考え方が基本です。
最初は難しく感じますが、
一度仕組みを理解すれば
どんなデザインにも応用できます。
HTML初心者の方は、
まず シンプルなカスタムcheckbox から試し、
徐々にデザインを調整してみてください。
フォーム全体の完成度が、
一気に向上します。