Slide 1

Slide 1 text

CSSセレクタを戦わせてみた⚔ 2024/04/19 BARフロントえんどう #2 @tocomi

Slide 2

Slide 2 text

⾃⼰紹介 @tocomi0112 (Kenta TSUNEMI) 🏢 テックタッチ株式会社 (https://techtouch.jp/) ♨ フロントエンドエンジニア # 趣味 ⚾ 野球観戦 (スワローズファン) 🏇 競⾺ (⽳党) 🎮 ゲーム (FF7REBIRTH プレイ中) 🥸 ネタアプリ開発

Slide 3

Slide 3 text

これまで作ったネタアプリ Slack で⼤喜利できるアプリ 歴史上の⼈物が反応してくれるSNS モアイが⼤喜利のお題考えてくれる

Slide 4

Slide 4 text

ネタアプリ CSS にまつわるネタアプリを作ってみました!

Slide 5

Slide 5 text

ネタアプリ CSSセレクタ詳細度バトラー⚔

Slide 6

Slide 6 text

アプリ概要 Chrome 拡張機能 表⽰中のwebページ上の CSSセレクターを使ってバトル⚔ ⾃分のセレクターと相⼿のセレク ターのどちらが強いかで、 「たたかう」か「にげる」か正解 のアクションが決まる (最後にデモします!)

Slide 7

Slide 7 text

詳細度 参考: https://developer.mozilla.org/ja/docs/Web/CSS/Specificity 1 - 2 - 1 ID列 #example CLASS列 .myClass [type="radio"] :hover TYPE列 h1 ::placeholder 優先度 ⾼ 低

Slide 8

Slide 8 text

詳細度の⽐較 1 - 2 - 3 0 - 4 - 5 0 - 0 - 10 > > ID = 100ポイント, CLASS = 10ポイント, TYPE = 1ポイント のように ポイント制で説明されることもあるが厳密には誤り。 0 - 1 - 0 0 - 0 - 11 > ID, CLASS, TYPE の順で⽐較が⾏われる。 その時点で数値に⼤⼩があればそれ以降の数値は⽐較されない。

Slide 9

Slide 9 text

詳細度の計算 詳細度の計算には、 specificity というライブラリを利⽤。 詳細度の算出(calculate)や詳細度同⼠の⽐較(compare)をしてくれる。

Slide 10

Slide 10 text

ネタアプリ デモします🎮

Slide 11

Slide 11 text

備考 (chrome拡張の話) popup からページの DOM には アクセスできないので、 content_script を介して DOM にアクセス、セレクタ⼀覧を取 得する。

Slide 12

Slide 12 text

備考 リポジトリ https://github.com/tocomi/css-specificity-battler Chrome 拡張 https://chromewebstore.google.com/detail/lceeemdjolalmackjjpfa agjcdplpfdk?hl=ja

Slide 13

Slide 13 text

おわり🗿