currentcolorキーワードで効率設計
UI開発者 佐竹最近、デザインシステムを意識した設計をすることが増えてきたことから、カスタムプロパティに設定した色からプロパティに設定する色を選びがちではないでしょうか。
そのような時に少し立ち止まって思い出して欲しいのがcurrentcolor
キーワードです!
currentcolor
キーワードはState of CSS 2022のアンケート結果では47.3%の人が「使った」16.8%の人が「知っている」という結果となっていますので、主要なキーワードであると思います。
しかし、そのように主要なキーワードであるはずのcurrentcolor
ですが、カスタムプロパティという強い存在によりうっかり使い忘れられるということがあるように感じています。
よって、この記事でcurrentcolor
キーワードの魅力を再認識できればと思います。
currentcolorキーワードとは?
currentcolor
キーワードはcolor
プロパティの値を表します。
currentcolor
キーワードでポイントになるのは継承です。
ある要素のプロパティにcurrentcolor
キーワードを設定すると、その擬似要素、子要素、孫要素など、継承が続く限り設定した色を伝搬させることができます。
そしてfocusやhoverなどといったユーザーアクションに合わせてcolor
の値を変更すると、その値がcurrentcolor
キーワードにも継承されます。
つまり、一度currentcolor
キーワードを設定すれば、後はcolor
の値だけで色を操作できます。
実用例
ボタンを例に説明します。
currentcolorキーワード使用しない例
まずはcurrentcolor
キーワードを使わない方法からです。
See the Pen currentcolorキーワード使用しない例 by ミツエーリンクス (@mitsue-links) on CodePen.
CSSは48行になりました。
currentcolorキーワード使用した例
次はcurrentcolor
キーワードを使った方法です。
See the Pen currentcolorキーワード使用した例 by ミツエーリンクス (@mitsue-links) on CodePen.
CSSは38行になりました。
例ではボタンの枠線と擬似要素でアローをborder
で作成して、border-color
の値をcurrentcolor
としました。
アローはボタンの子要素としてHTMLにsvg画像で配置して、fill
の値にcurrentcolor
を設定する方法でもcolor
の値を継承することができます。
まとめ
ボタンの例ではcurrentcolor
キーワードを使うだけで、10行分のコードが省略できました。これがサイトで使用するコンポーネントモジュール全てに適用されれば、結構なコード量の削減が期待できます。
currentcolor
キーワードを使ってどんどん効率的な設計をしていきたいですね。