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>
記事を書く
コメントをする