home
twitter
ページトップへ
目次
  • そもそもCSSの「セレクター」とは何か?
  • そもそも「疑似クラス」とは何か?(pseudo-class)
  • 「:is()」とは何か?
  • 「:is()」を使うと何ができる?
  • 「:is()」の使い方!
  • 括弧()の中に「セレクターリスト」を入れる
  • 「:is()」を使うことのメリット!
  • サポート状況が怪しい「疑似クラス」を安全に使うことができる
  • コードの量が減らせる
  • コードが読みやすくなる
  • 「:is()」を使う上での注意点!
  • 疑似要素には使えない
  • セレクターリストの中で詳細度が1番高いものが使われる
  • 「:is()」と「:where()」の違い
  • 参考リンク。
  • あわせて読みたい記事。
  • まとめ
about
categories
page
archive
皇帝ペンギンブログ

2024/04/06 (更新日:2024/07/11)

【CSS】疑似クラスの「:is()」の使い方!【分かりやすい】

Categories > CSSのセレクター編
こんばんは!初めましての方は初めまして!
しゅーた(@chibasyuta)です!

この記事ではCSSの疑似クラスの「:is()」の使い方について解説します。

疑似クラスの「:is()」って何??

このような方が対象です。

この記事の内容!

  • そもそもセレクターとは何か?
  • そもそも疑似クラスとは何か?
  • 疑似クラスの「:is()」とは何か?
  • 疑似クラスの「:is()」の使い方
  • 「:is()」と「:where()」の違い
また、下の動画でも疑似クラスの「:is()」の使い方について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それでは内容へ入ります!

目次
非表示
  • そもそもCSSの「セレクター」とは何か?
  • そもそも「疑似クラス」とは何か?(pseudo-class)
  • 「:is()」とは何か?
  • 「:is()」を使うと何ができる?
  • 「:is()」の使い方!
  • 括弧()の中に「セレクターリスト」を入れる
  • 「:is()」を使うことのメリット!
  • サポート状況が怪しい「疑似クラス」を安全に使うことができる
  • コードの量が減らせる
  • コードが読みやすくなる
  • 「:is()」を使う上での注意点!
  • 疑似要素には使えない
  • セレクターリストの中で詳細度が1番高いものが使われる
  • 「:is()」と「:where()」の違い
  • 参考リンク。
  • あわせて読みたい記事。
  • まとめ

そもそもCSSの「セレクター」とは何か?

セレクターの箇所を図示

CSSの「セレクター」とは「どの要素にスタイルを当てるか?」を指定する箇所のことを指します。

ふむふむ。

そもそも「疑似クラス」とは何か?(pseudo-class)

「疑似クラス」とは何か?

「疑似クラス」とは「要素の状態」の指定をすることができるセレクターです。

「:」コロンから始まるキーワードによって指定します。

また、「疑似クラス」は英語で「pseudo class」です。

「どの要素を選択するか」だけじゃなくて「どんな状態の要素を選択するか」の指定ができるので、指定の幅が広がります。

「疑似クラス」の基本的な使い方について詳しくは下記の記事でまとめています!

【CSS】「疑似クラス」とは何か?丁寧に解説!【分かりやすい】

関連記事

「:is()」とは何か?

「:is()」とはCSSの「疑似クラス」の1つです。

「:is()」を使うと何ができる?

:is( h1, h2, input:blank ) {
    background-color: skyblue;
}

「:is()」を使うと「セレクターリスト」の安全性を高めることができます。

リストの中に無効なセレクターが含まれていると「セレクターリスト自体が無効」になります。ですが、「:is()」を使うと、リストの中の有効なセレクターに対してはスタイルが当たる感じになります。

つまり無効なセレクターが含まれていることにより、セレクターリスト自体が無効になってしまうことを避けることができるのです。
なるほど!これはイイね
「セレクターリスト」とは?

「セレクターリスト」については下の記事で解説していますので、「セレクターリスト」について知りたい方はこちらをどうぞ!

【CSS】「セレクターリスト」について解説!【注意点についても】

関連記事

「:is()」の使い方!

「:is()」の使い方についても解説しますね!

括弧()の中に「セレクターリスト」を入れる

:is( h1, h2, input:blank ) {
    background-color: skyblue;
}

「:is()」は引数に「セレクターリスト」を取ります。

なのでこんな感じで括弧()の中に「セレクターリスト」をそのまま書いてあげればOKです。

「:is()」を使うことのメリット!

「:is()」を使うことのメリットは下記のとおりです。

「:is()」を使うことのメリット!

  • サポート状況が怪しい「疑似クラス」を安全に使うことができる
  • コードの量が減らせる
  • コードが読みやすくなる

サポート状況が怪しい「疑似クラス」を安全に使うことができる

h1, h2, p, input:blank {    これだとセレクターリスト自体が無効になる可能性がある
    background-color: pink;
}

:is( h1, h2, p, input:blank ) {   これなら少なくとも「h1, h2, p」にはスタイルが当たる
    background-color: pink;
}

セレクターリストの中でサポート状況が怪しい「疑似クラス」を使うことはリスクがあります。もしそれが無効であった場合、そのセレクターリスト自体が無効になってしまうからです。

そんな時に「:is()」を使えば、無効なセレクターの影響を受けなくなるので安全なコードになります。

例えば、疑似クラスの「:blank」は実験的な機能なので、サポートしてないWebブラウザが多い疑似クラスです。
そんな実験的な機能をセレクターリストの中で使いたいなら、「:is()」と一緒に使うといいでしょう!

コードの量が減らせる

section section h1,
section article h1,
section aside h1,
section nav h1,
article section h1,
article article h1,
article aside h1,
article nav h1,
aside section h1,
aside article h1,
aside aside h1,
aside nav h1,
nav section h1,
nav article h1,
nav aside h1,
nav nav h1 {
  font-size: 18px;
  font-weight: bold;
}

:is(section, article, aside, nav) :is(section, article, aside, nav) h1 {
    font-size: 18px;
    font-weight: bold;
}

ネストが深いセレクターは「:is()」を使って書くことで、このようにスッキリと書くことができます。

コードが読みやすくなる

section section h1,
section article h1,
section aside h1,
section nav h1,
article section h1,
article article h1,
article aside h1,
article nav h1,
aside section h1,
aside article h1,
aside aside h1,
aside nav h1,
nav section h1,
nav article h1,
nav aside h1,
nav nav h1 {
  font-size: 18px;
  font-weight: bold;
}

:is(section, article, aside, nav) :is(section, article, aside, nav) h1 {
    font-size: 18px;
    font-weight: bold;
}

「:is(section, article, aside, nav) :is(section, article, aside, nav) h1」のようにまとめて書いてあった方が、コードが読みやすいと思います。

個別で書くと、何が書いてあるのか把握するのに時間がかかりますよね。

「:is()」を使う上での注意点!

「:is()」を使う上での注意点は下記のとおりです。

「:is()」を使う上での注意点!

  • 疑似要素には使えない
  • セレクターリストの中で詳細度が1番高いものが使われる

疑似要素には使えない

p:is(::before, ::after) {  これじゃダメ
    display: block;
}

p::before,
p::after {           このように書く!
    display: block;
}

「:is()」の中で「疑似要素」を使うことはできません。

「:is()」が上手く効かない時は、「疑似要素」に使ってしまってないか、確認してみてください。

セレクターリストの中で詳細度が1番高いものが使われる

セレクターリストの中で詳細度が1番高いものが使われる

<div class="container">
    <p>てきすと。てきすと。てきすと。</p>
</div>
:is( h1, h2, p, #hoge ) {
    background-color: skyblue;
}

p {
    background-color: pink;
}

このようなコードを書くと、「background-color: pink;」が下に書いてあるので適用されそうじゃないですか。

でも実際は「background-color: skyblue;」が適用されます。

これはなぜかと言うと、「:is()」の詳細度にはセレクターリストの中で1番詳細度が高いセレクターの詳細度が使われるからです。今回だと「#hoge」という「idセレクター」が含まれていますよね。

なのでこの「idセレクター」の詳細度が使われるので、要素型セレクターの「p」よりも優先される、という状況になっています。

ふむふむ。これは知っておいた方がいいね

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

「:is()」と「:where()」は基本的に同じです。

ただ1点だけ違いがあります。それは何かと言うと、「詳細度」です。

「:is()」の詳細度は、引数のセレクターリストの中で最も詳細度が高いセレクターの詳細度が使われます。

それに対して「:where()」の詳細度は常に「0」です。

この点だ唯一の違いです。
なるほどね!

参考リンク。

仕様書。
https://drafts.csswg.org/selectors/#matches-pseudo

MDN。
https://developer.mozilla.org/ja/docs/Web/CSS/:is

あわせて読みたい記事。

大学生が夏休みにweb制作で13万円稼ぐまでにやったこと。【経験談】

関連記事

まとめ

CSSの「セレクター」とは「どの要素にスタイルを当てるか?」を指定する箇所のことを指す。

「疑似クラス」とは「要素の状態」の指定をすることができるセレクター。

「:」コロンから始まるキーワードによって指定する。

「:is()」はCSSの「疑似クラス」の1つ。

「:is()」を使うと「セレクターリスト」の安全性を高めることができる。

「:is()」は括弧()の中に「セレクターリスト」を入れて使う。

「:is()」を使うことのメリットは下記の通り。

「:is()」を使うことのメリット!

  • サポート状況が怪しい「疑似クラス」を安全に使うことができる
  • コードの量が減らせる
  • コードが読みやすくなる

「:is()」を使う上での注意点は下記の通り。

「:is()」を使う上での注意点!

  • 疑似要素には使えない
  • セレクターリストの中で詳細度が1番高いものが使われる

「:is()」と「:where()」は基本的に同じで、違いは「詳細度」に関してだけ。

こんな感じですかね!

この記事が気に入った方は僕のTwitter(@chibasyuta)のフォローもお願いします!

また、下の動画でも疑似クラスの「:is()」の使い方について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それではこんな感じでこの記事を終わります!

ではまた!

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.