accent-color
チェックボックスやラジオボタンなど、フォームの部品の色を指定するプロパティ。 inputを隠してspanで描き直していたチェックボックスを、標準の部品のまま色だけ変える指定に置き換えられます。
今の書き方
accent-colorは継承するため、:rootに指定すると、チェックボックス・ラジオボタン・<input type="range">・<progress>の色がまとめて変わります。
部品を隠さないため、キーボードでも操作できます。
:root {
accent-color: #0a7d5a;
}
<input type="checkbox" id="agree" />
<label for="agree">利用規約に同意する</label>以前の書き方
inputをdisplay: noneで隠し、labelの中のspanで枠とチェックの印を描き直していました。
inputが隠れているため、Tabキーで移動できず、キーボードでは操作できません。
.checkbox {
display: none;
}
.checkbox-icon {
display: inline-block;
position: relative;
width: 18px;
height: 18px;
margin-right: 8px;
border: 2px solid #767676;
border-radius: 3px;
box-sizing: border-box;
vertical-align: -3px;
}
.checkbox:checked + label .checkbox-icon {
border-color: #0a7d5a;
background-color: #0a7d5a;
}
.checkbox:checked + label .checkbox-icon::after {
content: "";
position: absolute;
top: 1px;
left: 4px;
width: 4px;
height: 9px;
border: solid #fff;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
<input type="checkbox" id="agree" class="checkbox" />
<label for="agree"><span class="checkbox-icon"></span>利用規約に同意する</label>置き換えるときの注意点
- 色が変わるのは、チェックボックス・ラジオボタン・
<input type="range">・<progress>だけです。<select>やテキスト入力、ボタンの色は変わりません。 部品ごとに色を変えたい場合は、その部品(input[type="range"]など)に指定します。 accent-colorで変えられるのは色だけです。 枠線の太さや角丸、チェックの印の形までデザインで決まっている場合は、以前の書き方を続けます。 その場合も、inputをdisplay: noneではなく見た目だけ隠す指定にすると、キーボードで操作できるようになります。- 標準のチェックボックスは、以前の書き方で描いた枠より小さく表示されることがあります。
大きさは
inputのwidth・heightで合わせます。 display: noneを残したままだと部品が表示されないため、以前の書き方のCSSとspanは消してから置き換えます。- チェックの印の色(白か黒か)は、Chrome・Firefoxではアクセントカラーとのコントラストを見てブラウザが選びます。 macOSのSafariでは、明るい色を指定しても印が白のままで、見えにくくなります。
フォールバック
未対応のブラウザでは、部品が標準の色で表示されるだけで、操作はできます。 対象の5ブラウザはすべて対応済みなので、通常は以前の書き方を残す必要はありません。
Browser Support
Chrome
v93+2021-08-31Edge
v93+2021-09-02Safari
v26.2+2025-12-12Safari (iOS)
v26.2+2025-12-12Firefox
v92+2021-09-07