【HTML,CSS】疑似クラス :has() が結構便利!?

date_range 2023/10/09
GUARDIAN Creative BLOG
has()

皆さんこんにちは!株式会社ガーディアンの星と申します!


今回は、CSSの擬似クラスである「:has()」について紹介していきます。


使い方次第でかなり便利な擬似クラスですので、おススメです!

ぜひ使ってみてください!

疑似クラス :has() とは?

「:has()疑似クラス」は、指定した要素がある場合にのみスタイルを適用できるCSSです。


今回は主な使い方は下記の2つです!

1,特定の要素がセレクタ内にあるかどうか判別する

2,特定の要素がある要素の後に続いているかどうか判別する


1つずつ紹介していきます!

1,特定の要素がセレクタ内にあるかどうか判別する

特定の要素がセレクタ内にあるかどうか判別する

例えばこの画像のように、「画像ありのコンテンツ」と「画像なしのコンテンツ」の2つのコンテンツがあります。


その時に星はこう思いました。

「画像ありのコンテンツの画像とテキストを横並びにしたい!」と


そこでこのhas()を使ってみましょう!

以下の記述を付け加えてみます!


.contents:has(.contents_image) {
display: flex;
align-items: center;
gap: 2rem;
}

↑これは「contents」の要素の中の「contents_image」があるものにのみに、スタイルを効かせます。

「contents」の要素の中に「contents_image」が無い場合はこのスタイルは効かないということですね。


そうするとこのようになります!

has()を反映

「画像ありのコンテンツ」の方にのみにスタイルが適用されました!


「1,特定の要素がセレクタ内にあるかどうか判別する」はこのように使うと良いでしょう!

2,特定の要素がある要素の後に続いているかどうか判別する

特定の要素がある要素の後に続いているかどうか判別する

上の画像のように画像なしコンテンツの方のh2タグの後にPタグを追加しました。


h2要素の後にPタグのある方にのみスタイルを適用させることが出来ます!


以下の記述を追加します。


h2:has(+ p) {
color: red;
}

↑これはPタグが後に存在するh2のみに対して、文字色を赤色にするというCSSの記述です!

反映するとどうなるでしょうか!?

Pタグが後にあるh2にのみ、適用

このようにPタグが後にあるh2にのみ、適用されましたね!


「2,特定の要素がある要素の後に続いているかどうか判別する」はこのように使えます!

最後に

いかがでしたでしょうか?

今回はCSSの「has()」について書いてみました!


has()を使うと、より柔軟にスタイルが適用できるのでぜひ使ってみてください!!


最後までご覧いただき、ありがとうございました!! 定期的に発信できたらと思います!

人物

クリエイティブプロダクト部 クオリティコントロール班 星 翼(ほし つばさ)



WEB関連の情報を発信していきます!

記事を読んで役に立つようなコンテンツを配信出来たらいいなと思っています!


今回使用した技術:HTML・CSS