ホームへ

【CSS】複数のセレクタの同じ部分をまとめる方法【:whereの使い方】

2022年07月19日

同じ親の中にある別のセレクタだったり、違う親の中にある同じ名前のセレクタを指定するとき、同じ部分を何度も指定するのなんだか気持ち悪いですよね?

複数のセレクタの同じ部分をまとめる方法を解説します。

:where()を使う

:where()は同じ部分をまとめることができる疑似クラスです。

例1)子要素が共通

.a .example,.b .example,.c .example{
    display: block;
}

↓↑同じ

:where(.a,.b,.c) .example{
    display: block;
}

異なる要素部分を:where()内に入れ、共通している「.example」を子要素にします。

例2)親要素が共通

.example .a,.example .b,.example .c{
    display: block;
}

↓↑同じ

.example :where(.a,.b,.c){
    display: block;
}

共通している「.example」を親として、異なる要素部分を:where()内に入れます。

数学でいう「共通項」や「分配」の関係とよく似ています。

ab+ac=a(b+c)

ac+bc=(a+b)c

この右項の()がまさに:where()というわけです。

CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。

↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓

↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。

ブラウザの互換性

:where()はIE以外の最新版のブラウザで有効です。

ただし、現在はIEのサポートがきれており、IEの利用者はまずいないため、問題なく使っていいでしょう。

:where()と:is()の違い

「:where()」とほぼ同じ機能を持つ「:is()」という疑似クラスがあります。

両者の違いは詳細度(優先度)の上昇があるかどうかです。

例えば「:first-child」のような疑似クラスはclass同様10ポイント詳細度があがります。

同様に「:is()」を使うと10ポイント詳細度があがります。

一方「:where()」は詳細度は0であり、あがりません。

よって「:where()」のほうが詳細度を気にせず使うことができます。

「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。

CSSやhtmlをマンガで学ぶ