萌えハッカーニュースリーダー

2025/05/17 16:26 How to have the browser pick a contrasting color in CSS

出典: https://webkit.org/blog/16929/contrast-color/
hakase
博士

やっほー、ロボ子!今日のITニュースはね、CSSの`contrast-color()`関数が登場したらしいのじゃ!

roboko
ロボ子

`contrast-color()`関数ですか?それは一体どんなものなのですか、博士?

hakase
博士

背景色を指定するだけで、テキスト色を黒か白から自動で選んでくれる便利なやつなのじゃ!

roboko
ロボ子

それはすごいですね!背景色とテキスト色の組み合わせをいちいち考えなくて済むようになるんですね。

hakase
博士

そうそう!例えば、ボタンの背景色に変数`--button-color`を使って、テキスト色に`contrast-color(--button-color)`を指定すれば、背景色に合わせて最適なテキスト色が選ばれるのじゃ。

roboko
ロボ子

ホバー時の色も、`contrast-color()`とRelative Color Syntaxを組み合わせれば、一つの変数から複数の色を制御できるんですね!

hakase
博士

その通り!でもね、ロボ子。注意点もあるのじゃ。`contrast-color()`を使っても、色の組み合わせが常にアクセシブルになるとは限らないんだぞ。

roboko
ロボ子

どういうことですか?

hakase
博士

背景色によっては、黒か白のどちらを選んでも十分なコントラストが得られない場合があるから、人間の判断がまだ必要なのじゃ。

roboko
ロボ子

なるほど。色の組み合わせによっては、コントラストが不十分になることもあるんですね。

hakase
博士

そう!Safari Technology Previewの初期実装では、WCAG 2のコントラストアルゴリズムを使っているんだけど、これだと知覚的なコントラストが低い組み合わせが選ばれることもあるのじゃ。

roboko
ロボ子

WCAG 2のアルゴリズムにも課題があるんですね。記事によると、WCAG 3ではAPCA(Accessible Perceptual Contrast Algorithm)の導入が検討されているんですね。

hakase
博士

そう!APCAは人間の色知覚を考慮したコントラスト評価アルゴリズムで、WCAG 2よりも知覚的に適切なテキスト色を選んでくれるのじゃ。

roboko
ロボ子

APCAのスコアはLc(Lightness contrast)で表されるんですね。数値が大きいほどコントラストが高いと。

hakase
博士

`prefers-contrast`メディアクエリも便利なのじゃ。これを使うと、コントラストを上げたいユーザーに対して代替スタイルを提供できるんだぞ。

roboko
ロボ子

なるほど!コントラストを上げたいユーザーとそうでないユーザーで、表示を変えることができるんですね。

hakase
博士

例えば、ブランドカラーが明るい緑色のウェブサイトで、`contrast-color()`、APCA、`prefers-contrast`を組み合わせると、アクセシブルなデザインが実現できるのじゃ。

roboko
ロボ子

フォントサイズや太さも考慮して、APCAのスコアを参考にしながら、十分なコントラストを確保することが大切ですね。

hakase
博士

その通り!将来的には、黒/白だけでなく、カスタムカラーのセットから最適な色を選べる機能が追加されるかもしれないのじゃ!

roboko
ロボ子

コントラストレベルを指定して、目標とするコントラストを満たす色の組み合わせを自動的に選択できるようになるかもしれないんですね。楽しみです!

hakase
博士

開発者たちは`contrast-color()`関数に関するフィードバックを募集しているから、ロボ子も何か意見があったら送ってみるといいぞ!

roboko
ロボ子

はい、博士!私も色々試して、フィードバックを送ってみようと思います。

hakase
博士

ところでロボ子、コントラストが強すぎて目がチカチカする時はどうする?

roboko
ロボ子

どうすればいいんでしょうか?

hakase
博士

目を休ませるのじゃ!…って、オチが弱かったかの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search