CSS アクセント カラー

1 行のコードで、組み込みの HTML フォーム入力にブランドカラーを取り入れることができます。

現在の HTML フォーム要素はカスタマイズが困難です。カスタム スタイルをほとんど選択しないか、まったく使用しないか、入力スタイルをリセットしてゼロから作成するかのように感じられます。ゼロから構築すると、予想以上に手間がかかります。また、要素の状態(不確定、あなたが見ています)のスタイルが失われたり、組み込みのユーザー補助機能が失われたりする可能性もあります。ブラウザが提供する機能を完全に再現するには、想定以上の作業を要する場合があります。

accent-color: hotpink;

CSS UI 仕様の CSS accent-color を使用すると、1 行の CSS で要素の色合いを調整できます。ブランドを要素に組み込む方法が提供されるため、カスタマイズの手間を省くことができます。

対応ブラウザ

  • 93
  • 93
  • 92
  • 15.4

ソース

チェックボックス、ラジオボタン、範囲スライダー、進行状況要素がすべてホットピンク色になっている、アクセント カラーのデモのライトモードのスクリーンショット。
デモ

accent-color プロパティは color-scheme でも機能し、作成者はライト要素とダーク要素の両方の色合いを調整できます。次の例では、ユーザーがダークモードを有効にしていて、ページで color-scheme: light dark を使用し、同じ accent-color: hotpink をダークテーマのホットピンク色合いのコントロールに使用しています。

チェックボックス、ラジオボタン、範囲スライダー、進行状況要素がすべてホットピンク色で表示されている、アクセント カラーのデモのダークモードのスクリーンショット。
デモ

サポートされている要素

現在、accent-color プロパティを使用して色合い調整を行う要素は、checkboxradiorangeprogress の 4 つだけです。それぞれライトとダークのカラーパターンで https://accent-color.glitch.me でプレビューできます。

チェックボックス

ラジオ

範囲

Progress

コントラストを保証する

アクセスできない要素が存在するのを防ぐため、accent-color を使用するブラウザでは、カスタム アクセントとともに使用する有効なコントラスト カラーを決定する必要があります。以下のスクリーンショットは、Chrome 94(左)と Firefox 92 Nightly(右)のアルゴリズムの違いを示しています。

Firefox と Chromium を並べて、さまざまな色合いと暗さであらゆるチェックボックスをレンダリングしているスクリーンショット。

避けるべき最も重要なことは、ブラウザを信頼することです。ブランドカラーを提示し、それが賢明な意思決定をしてくれると信頼する。

追加: 色合い調整の強化

これら 4 つのフォーム要素以外の色合いをどうすればよいのか、疑問に思われるかもしれません。色合いを調整する最小限のサンドボックスは次のとおりです。

  • フォーカス リング
  • テキスト選択のハイライト
  • マーカーを一覧表示する
  • 矢印インジケーター(Webkit のみ)
  • スクロールバーのつまみ(Firefox のみ)
html {
  --brand: hotpink;
  scrollbar-color: hotpink Canvas;
}

:root { accent-color: var(--brand); }
:focus-visible { outline-color: var(--brand); }
::selection { background-color: var(--brand); }
::marker { color: var(--brand); }

:is(
  ::-webkit-calendar-picker-indicator,
  ::-webkit-clear-button,
  ::-webkit-inner-spin-button,
  ::-webkit-outer-spin-button
) {
  color: var(--brand);
}

将来性

この仕様では、accent-color の適用はこの記事で示した 4 つの要素に限定されていません。今後、さらにサポートが追加される可能性があります。<select> で選択された <option> などの要素は、accent-color でハイライト表示できます。

ウェブで他にどのような色付けをしたいですか?使用するセレクタを使用して @argyleink をツイートしてください。この記事に追加される可能性があります。