そのマニュアルは捨てましょう。
IDに数字を先頭に置くことはできません。
ID--すなわち一意セレクタは詳細度が0,1,0,0でしかも、そのページには一箇所しかなく、かつ基数大きいので、たとえ#ID1 #ID2 #ID3・・・#ID20{}としてもstyle属性での指定(詳細度1,0,0,0)より優位に立つことはありません。
なのにそれが使われているのは、もしちゃんと理解して例示しているとしたら
・一枚のスタイルシートを複数のHTMLに適用させたときに、区別される
・詳細度が高くなり詳細度の差で指定が変えられる
などの理由からです。
---ただ、きちんとHTMLやCSSを理解しているとは思えません。なら、重要なことですから、説明がされているはずです。
[HTML1]
<div id="ID1">
<div id=""ID2">
[HTML2]
<div id="ID3">
<div id=""ID2">
の場合、
#ID1 #ID2{}が適用されるのは、HTML1だけですね。
また、
#ID #ID2{color:blue}
#ID1,#ID2{color:red;}
とあれば、前者の詳細度が0,2,0,0になりますから、続く指定でも上書きされませんね。
★CSS2以降、基点となるセレクタを書くことになっています。ない場合は*(全称セレクタ--詳細度 0,0,0,0 )があるとみなされますが・・・。
★一意セレクタは、その要素にしか有効でなく、かつ詳細度も高いためスタイルのためだけにIDを振るのは感心しません。
[HTML1]
<div class="header">
<div class="nav"></div>
</div>
[HTML2]
<div class="section">
<div class="nav"></div>
</div>
<div class="footer">
<div class="nav"></div>
<div class="nav"></div>
</div>
でも、この4つのdiv.navはいくらでも区別できるわけですから・・
div.nav{}
div.header div.nav{}
div.section div.nav{}
div.footer div.nav{}
div.footer div.nav + div.nav{}
と・・そうすると共通する部分はclassですから一挙に指定できますし、変えたいところのみ詳細度にしたがって上書きすれば良いですから・・
お礼
そうですね。 ところで、実際の動作はどうなるのでしょうか? ブラウザがDOMツリーを上から順に読み込み、先にCSS抜きでHTMLとHTMLに記載された画像をブラウザに表示するでしょう。 次に、CSSを読み込み、CSSのセレクタを見つけたら、HTMLに戻り、HTMLの要素を上から順にマッチングさせていくのでしょう。 だとしたら、CSSのセレクタとHTMLの要素を上から順にマッチングさせ、ひとつ見つかったらマッチングを中断して、次CSSセレクタに移るのがID、 CSSのセレクタとHTMLの要素を上から順にマッチングさせ、ひとつ見つかっても、</html>までマッチングし続けるのがClassなのだと思います。 この仮説が正しかったとしたら、詳細度の都合ならセレクタを親子として重ねる必要が無くても、読み込み効率化の都合で重ねべき場合もあるのではないでしょうか?