知っておきたいCSSの優先度
スタイルの優先度のルール
読み込んだHTML内のメディア指定のCSS
↓ない場合
読み込んだHTML内のもの->ブラウザにユーザーが設定したもの->ブラウザデフォルト
※HTML内でインライン指定されていれば以下を再優先
↓上記の中で
セレクタの優先度を計算する
↓重なった場合
後から読み込んだものを優先
セレクタの優先度の計算方法
セレクタには優先順位があり、点数を加算した結果、高得点のものが適用される。
点数が同じならば、後に書いたスタイルが優先される。
※但し桁を超えて適用されることはない(2015/11/13追記)
コメントに頂いたようにバージョン的に考えたほうが理解しやすいかもしれません
点数計算のやり方を以下に記述する
以下の点数を加算していく
| セレクタ | 例 | 点数 |
|---|---|---|
| 全称セレクタ | * | 0 |
| タイプセレクタ | p | 1 |
| 擬似要素 | :first-child | 1 |
| - | - | 超えられない壁 |
| 擬似クラス | [type="text"] | 10 |
| classセレクタ | .fugafuga | 10 |
| - | - | 超えられない壁 |
| idセレクタ | #piyopiyo | 100 |
| - | - | 超えられない壁 |
| 要素に直書き | style="" | 1000 |
計算例
| 例 | 計算 | 合計点 |
|---|---|---|
| style="" | 1000(style属性) | 1000点 |
| #hoge | 100(ID属性) | 100点 |
| .a.b.c.d.e.f.g.h.i.j.k | 10(クラス属性) * 11 | 110点 ※(2015/11/13追記)クラス属性をいくら集めてもID属性の100点を超えられない |
| li.color.label | 1(要素名) + 10(クラス属性) + 10(クラス属性) | 21点 |
| table tr td.color | 1(要素名) + 1(要素名) + 1(要素名) + 10(クラス属性) | 13点 |
| div + *[href$="com"] | 1(要素名) + 0(全称セレクタ),+ 10(擬似クラス) | 11点 |
| h1 div + span | 1(要素名) + 1(要素名) + 1(要素名) + 10(クラス属性) | 3点 |
| li:last-child | 1(要素名) + 1(擬似要素) | 2点 |
| li:last-child | 1(要素名) + 1(擬似要素) | 2点 |