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