HTMLのチェックボックス(<input type="checkbox">)やラジオボタン(<input type="radio">)をCSSで装飾したいというのはよく聞く話です。2024年現在は、HTMLの記述は簡単なまま、CSSで自由度の高い装飾も実現できるようになっています。
単に色調を整えられればよいという場合は、accent-colorプロパティを使います。
input[type="checkbox"], input[type="radio"] {
accent-color: #d31;
}
accent-colorプロパティは継承するので、body要素などに指定してその子孫のフォームコントロールに一律に適用することもできます。
自由に装飾したい場合は、input要素にappearance: none[LINK]を指定したうえで、未チェック状態とチェック済み状態のスタイルを指定していきます。::before、::after疑似要素も使えます。
input[type="checkbox"] {
-webkit-appearance: none; /* Safari 15.3以下のため */
appearance: none;
border: thin solid;
}
input[type="checkbox"]::before {
content: '〓';
visibility: hidden;
}
input[type="checkbox"]:checked::before {
visibility: visible;
}
これまでチェックボックスやラジオボタンをCSSで装飾したい場合は、input要素自身ではなくその直後に置いたspan要素やlabel要素を装飾するのが一般的でした。
<label>
<input type="checkbox">
<span>...</span>
</label>
<input id="the-radio-1" type="radio">
<label for="the-radio-1">...</label>
セコメントをする