新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

Webデザイン時のHTML・CSSコーディングにおけるCSSセレクタの優先順位の出し方

   

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

WebデザインにおいてHTML同様重要となってくるCSS(カスケードスタイルシート)に関して、セレクタの優先順位をまとめてみることにしました。
同じプロパティが各セレクタに書かれている場合、優先順位の高いセレクタに対して書かれたプロパティ値の方が適応されるというわけです。

スポンサーリンク
 

これは、各セレクタを数字に置き換えると分かりやすいです。
各セレクタの数値は以下のようになります。

セレクタ 数値
インラインによる表記
(style=”color:red;”)
1000
IDによる表記
(例:#wrapper)
100
classによる表記
(例:.kakomi)
10
各タグに対する表記
(例:h1)
1

インラインによる表記はセレクタではありませんが入れておきました。
また、擬似セレクタ(a:hover等)に関してはタグに対する表記と同じ「1」となります。

以上を子孫セレクタ表記の場合は全て足してあげればいいということになります。
例えば以下の様なHTMLがあった場合、

<div id="header" class="head">
<h1 class="catch">こんにちは</h1>
</div>

H1に対しては以下の様なセレクタが考えられます。

  • h1
  • .catch
  • #header h1
  • #header .catch
  • .head h1
  • .head .catch
  • div h1
  • div .catch

これをそれぞれ数値化して足し算したのが以下。

  • h1=1
  • .catch=10
  • #header h1=100+1=101
  • #header .catch=100+10=110
  • .head h1=10+1=11
  • .head .catch=10+10=20
  • div h1=1+1=2
  • div .catch=1+10=11
つまり、優先順位順に並べると

  1. #header .catch=100+10=110
  2. #header h1=100+1=101
  3. .head .catch=10+10=20
  4. .head h1=10+1=11
  5. div .catch=1+10=11 
  6. .catch=10
  7. div h1=1+1=2
  8. h1=1

となるわけで、それぞれ同じプロパティが書かれていた場合、優先順位の一番高い「#header .catch」に書かれた値になるとこういうわけです。
当然、「#header .catch」に該当のプロパティが書かれていなければ、次の「#header h1」の値になります。

なお、数値が全く同じ場合(上記の「.head h1」と「div .catch」等)はCSSファイル内において下に書かれたものが適応されるようになっています。
この辺りは擬似セレクタ(a:hover、a:visited等)を書くときに順番を気にしなければならないのと同じ仕組ですね。

今までは、最終手段としてインライン表記をよく利用していましたが、これからは子孫セレクタに親を追加してあげるというのも、書いたCSSが適応されない時の対策として有効だなと感じました。

なお、「!importantルール」を使って優先順位を操作するという方法もあります。
これに関してはまたいずれ。

 - Webデザイン, プログラミング

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

Googleだけじゃない、livedoorでもサービス終了。「livedoorメール」、「livedoor PICS」も

1年以上前の記事です。内容が古い可能性があります。「Googleリーダー」が終わ …

no image
最新のSEOでは?

1年以上前の記事です。内容が古い可能性があります。RSSを使ってBLOGから最新 …

no image
ドメインリサイクル

1年以上前の記事です。内容が古い可能性があります。ドメインリサイクル業者(個人? …

no image
Yomi-Searchの大量のログファイルをそれぞれ調べてみた

1年以上前の記事です。内容が古い可能性があります。サーバー移転に伴ってYomi- …

ブログのメニューにCSS3の「box-shadow」プロパティでドロップシャドウを付けてみた【Webデザイン】

1年以上前の記事です。内容が古い可能性があります。そろそろCSS3を初めてみよう …

このサイトはコンピュータに損害を与える可能性があります

1年以上前の記事です。内容が古い可能性があります。Googleでは、検索結果に「 …

no image
「簡易BBS2000」にファイル情報漏えいの脆弱性

1年以上前の記事です。内容が古い可能性があります。マジですか? これベースの簡易 …

キーワード調査は「Googleアナリティクス」ではなく「ウェブマスターツール」を使え

1年以上前の記事です。内容が古い可能性があります。アクセス解析といえば「Goog …

no image
ネットショップはどこで?

1年以上前の記事です。内容が古い可能性があります。お客さんでネットショップをやり …

no image
Flashの時間稼ぎスクリプト

1年以上前の記事です。内容が古い可能性があります。Flashを編集していて、この …