Meguro.css #7 @ ラクスル での登壇資料 https://megurocss.connpass.com/event/145780/
詳細度調整疑似クラスの使い所を 考えてみたPresented By @glico800
View Slide
自己紹介glicoSho Ezawa ( ) / @glico800ビザスクlite の Webエンジニア フロントエンドやUIデザインが好き 妻・リクガメ・シマリスの4人家族?
もくじ1. 注意事項2. 詳細度調整疑似クラスとは3. 使い所を考えてみた 4. まとめ
1. 注意事項
注意事項Working Draft今後仕様の変更や採用の見送りがある可能性があります。 詳細度調整疑似クラスは、2019/10/01 時点ではW3C 勧告プロセスにおける の段階であり、予めご了承ください。
2. 詳細度調整擬似クラスとは
詳細度調整疑似クラス :where()詳細度の計算時に無視- 引数として与えたセレクタをする疑似クラス - 英語では “The Specificity-adjustmentPsudo-class”- 2019/10/01 時点で W3C 勧告プロセスにおけるWorking Draft の状態
サンプル* Specificity is calculated by https://specificity.keegan.st
3. 使い所を考えてみた
どうしてわざわざ使い所を考えてみたのか乱用すると保守性が下がりそう 擬似クラスを使うセレクタ ちゃんと使えば便利そう- 悪名高い !important と同様に詳細度に干渉するので、- とはいえ、:hover のようなはどうしても詳細度が高くなるため、“!important” war
公式サンプルの解説- リンクの文字装飾なし、ホバー時は下線- ナビゲーション上のリンクだけ非マウスホバー時でも下線を付けたい。参考: https://www.w3.org/TR/selectors-4/#zero-matches
:where() を使わなくても実現できる- リンクの文字装飾なし、ホバー時は下線- ナビゲーション上のリンクだけ非マウスホバー時でも下線を付けたい。参考: https://www.w3.org/TR/selectors-4/#zero-matches
もう少し実用的な例はないか…
詳細度が高くなりがちなケース:hover, :checked, :required, :first-child, ...input[type=”radio”], a[target=”_blank”] , ...input[type=”radio”]:checked,a[target=”_blank”]:visited, ...- 擬似クラスを使うケース - 属性セレクタを使うケース - 上記を両方使うケース
ラジオボタンのスタイル例- クラスセレクタやクラスセレクタ+擬似クラスだと詳細度が負けてしまう詳細度 : 0.1.0詳細度 : 0.2.1
:where() を使うと>> クラスセレクタだけでも詳細度が勝てる! <<詳細度 : 0.0.1詳細度 : 0.1.0
まとめ
まとめセレクタの詳細度を無視できる 乱用には注意 詳細度が高くなりがちなスタイル>> 用途を限定して使うのが良さそう! <<- 詳細度調整擬似クラス :where() を使うと引数に与えた- 詳細度に干渉するため- 擬似クラスや属性セレクタなどを使ったセレクタので使うと良さそう
ご清聴ありがとうございました