フォロー

🧩 エンジニア豆知識 #2──「:is() / :where()」で “セレクター地獄” を救え!

こんにちは、戦うエンジニア応援団長です。
jQuery 時代の長〜い複合セレクターに疲弊していませんか?
今日はCSS4 セレクターの新星 :is():where() を使い、
可読性&保守性 を爆上げするワザをサクッと紹介します。


1. :is() とは?

:is() は “マッチング条件をまとめる” セレクター。
以下 3 行を…

article h1,
article h2,
article h3 { margin-top: 1.2em; }

この 1 行に集約!

article :is(h1, h2, h3) { margin-top: 1.2em; }
  • 可読性アップ:どの要素が対象かパッと分かる
  • 重複ミスゼロ:編集箇所が 1 行のみ

2. Specificity の違い:「:is()」は強い、「:where()」は弱い

セレクターSpecificity
:is()内部で最も高い値を引き継ぐ
:where()常に “0”(超弱い)

:where() を使うと「上書きされる前提」のリセット用 CSS が書ける:

/* margin の初期化 */
:is(h1, h2, h3),
:where(h4, h5, h6) { margin: 0; }

3. 実務 Tips──WordPress テーマに置き換えてみる

テーマ CSS でよく見る “階層セレクター” を整理:

/* BEFORE */
.sidebar .widget ul li,
.sidebar .widget ol li,
.sidebar .widget menu li { list-style: none; }

/* AFTER */
.sidebar .widget :is(ul, ol, menu) li { list-style: none; }

WordPress のカスタムブロック CSS を書くときにも有効です。
作業時間がギュッと短縮できるので、ぜひ置換してみてください!


4. 対応状況

  • デスクトップ主要ブラウザ:Chrome 88+ / Edge 88+ / Firefox 78+ / Safari 14.1+
  • モバイル:iOS Safari 14.5+ / Android Chrome 88+ / Android Edge 88+

ほぼ実務投入 OK! 旧 Edge、IE は切り捨て推奨です。


まとめ

  • :is()複合セレクターのリファクタへ
  • :where()リセット CSSに便利
  • Specificity を理解して “狙った強さ” のスタイルを当てよう

これで CSS セレクター地獄からひとつ脱出!
戦え、エンジニア諸君!!🧩🔥

コメントする