【CSS擬似クラスの:has()】つまり、子から親を探せるというコトです
「div > p」などのように、親から子を特性するセレクタ用法は有名ですが、擬似クラスの:has()を使うと、その逆「子にp要素を持っているdiv」をセレクタにする事ができます。
豊かに引きこもる。
Webデザインは器。ブログは中身。
「レンちゃんとペンタ」では、2つのスキルを掛け合わせて、
おウチで豊かに楽しく暮らす方法をご紹介しています。
擬似クラス:has()の使い方
今回は、書籍リストのようなサンプルでお話します。
うち、「売り切れ」のカラムだけスタイルを変えたいとします。
:has()を使うと、次のように「span要素を持っているli要素」だけをセレクタにすることができちゃいます。
idやクラスも指定可能
:has()の括弧の中には、タグ名だけでなく、idやクラスも入れられます。
先ほどのCSSであれば、こんな表記も定義できるということです。
子要素でも孫要素でもOK
条件となる要素が何階層下にあっても大丈夫です。
これでも、
これでも、
ちゃんと追っかけてくれます。
:has()を活用すればJavaScript要らず
ここからは実用例をご紹介。
サンプルはメール一覧みたいイメージですが、:has()を使って次のような機能を実装しています。
・チェックを入れた行の背景色を変える
・一つでもチェックが入っている場合、「選択したメールを削除する」のリンクを表示
・プルダウンでヘッダーの色を変えられるようにする
チェックを入れた行の背景色を変える
例えばこんなのを実装すると、チェックボックスにチェックを入れたカラムの背景色が変わります。
一つでもチェックが入っている場合、「選択したメールを削除する」のボタンを表示
さらにこんなのを加えると、チェックが一つでも入っている場合のみ、削除用のメニューが出るようになります。
プルダウンでヘッダーの色を変えられるようにする
最後にこんなのも。
プルダウンの選択によって、カラーが変わるようになります。便利!
まとめ
親から子を特定するセレクタはよく用いられますが、
has:()を使うと、その逆ができるようになるという事ですね。
役割としてはそれだけなんですが、最後にご紹介した通り、JavaScriptや各種プログラムがないと実装できなかった仕組みをCSSだけで作れるようになるので、アイデア次第では相当お役立ちの用法になるはずです。
-
Home
-
【CSS擬似クラスの:has()】つまり、子から親を探せるというコトです