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-31
  • Edge

    v93+
    2021-09-02
  • Safari

    v26.2+
    2025-12-12
  • Safari (iOS)

    v26.2+
    2025-12-12
  • Firefox

    v92+
    2021-09-07

機能名やコードで検索できます

例:aspect-ratio、:has()、padding-top

別の言葉や、プロパティ名で試してください

検索を読み込めませんでした