CSSの変数をインラインで使用した条件付きCSS、コードを減らしながらもバリエーションを作成するCSSのテクニック

CSS変数を使用して、コードを減らしながらもUI要素やコンポーネントのバリエーションを作成するCSSのテクニックを紹介します。

CSSはclassを使用すると、個別の値のみをターゲットにスタイルを適用できます。CSS変数を使用すると、連続した値の範囲をカバーでき、特定のトークンを使用して特定のスタイルを適用できるようになります。

CSSの変数をインラインで使用した条件付きCSS

CSS変数(カスタムプロパティ)について詳しくは、下記をご覧ください。

HTMLは、buttonclassstyleを与えます。ポイントとなるのは、styleにインラインでCSS変数を設定することです。

CSSは、下記の通り。
--size: mdは少し大きいボタン、--size: smは少し小さいボタンです。

このCSSを見て、疑問を浮かべるかもしれません。

  • セレクタを,区切りで繰り返してるのはなぜ?
  • styleじゃなくて、classでスタイルを与えればいいのでは?

,区切りの2つセレクタ(--size: md, --size:md)は、同じことを繰り返しているように見えるかもしれませんが、:と値の間にスペースを入れると入れない場合を想定したものです。この2つを用意しておくことで、CSS変数をインラインで定義する場合にスペース有りと無しの両方をターゲットにします。

classでスタイルを与えればいいのでは?は、確かにclassで与えることもできます。しかしこのCSSを使用すると、変数の値またはトークン(md)のいずれかを使用して、コンポーネントのスタイルを更新することができます。これによりCSSが削減され(複数のケースに対して1つのツール)、トークンを使用するときに複数のCSSのプロパティを変更できます。たとえば、テキストコンポーネント内にオーバーフローのアイテムを作成するには、下記のようになります。

実際の動作は、デモページをご覧ください。

See the Pen
Conditional CSS using inline variables
by coliss (@coliss)
on CodePen.

元ネタは、下記ポストより。

sponsors

top of page

©2024 coliss