[解決済み] CSSの特異性のポイントはどのように計算されるのですか?
質問
特異性を研究する私は、このブログにつまずいた - 。 http://www.htmldog.com/guides/cssadvanced/specificity/
特異性とは、CSSの加点方式であることが書かれています。要素は 1 ポイント、クラスは 10 ポイント、ID は 100 ポイントの価値があると書かれています。さらに、これらのポイントを合計し、その総合的な金額がそのセレクタの特異性であると述べています。
例えば
ボディ = 1ポイント
ボディ.ラッパー = 11点
body .wrapper #コンテナ = 111ポイント
ということで、このポイントを利用して、以下のCSSとHTMLで文字が青くなると予想します。
#a {
color: red;
}
.a .b .c .d .e .f .g .h .i .j .k .l .m .n .o {
color: blue;
}
<div class="a">
<div class="b">
<div class="c">
<div class="d">
<div class="e">
<div class="f">
<div class="g">
<div class="h">
<div class="i">
<div class="j">
<div class="k">
<div class="l">
<div class="m">
<div class="n">
<div class="o" id="a">
This should be blue.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
15クラスで150点、1IDで100点なのに、なぜ文字が赤なのですか?
どうやら、ポイントは単に合計されるだけでなく、連結されるようです。それについては、こちらをご覧ください。 http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html
ということは、セレクタの中のクラス =
0,0,15,0
または
0,1,5,0
?
(私の直感では前者だと思うのですが、IDセレクタの特異性はこのように見えると知っているからです。
0,1,0,0
)
どのように解決するのですか?
ペッカの回答 は 実質的に であり、おそらくこの問題について考える最良の方法です。
しかし、すでに多くの人が指摘しているように、W3C CSS 勧告では、"(大きな底辺を持つ数体系で)3 つの数字 a-b-c を連結すると、特異性が得られると述べています。
その結果、quot;very large base" が採用されていることがわかりました (少なくとも、最も一般的に使用されている 4 つのブラウザーで)。
* で)この標準的なアルゴリズムを実装するために採用されているのは、256 または 2 8 .これが意味するところは、0個のidと256個のクラス名で指定されたスタイルが は で指定されたスタイルが、1 つの ID で指定されたスタイルよりも優先されるということです。これを少し試してみました。
-
...しかし、残念ながら256のIDは ではなく であり、1 つのインライン・スタイルを上書きするには十分ではありません。 (2012/8/15更新)このような場合は
!important
)
つまり、事実上、ポイントシステムは存在するのですが、それは10進法ではありません。しかし、それは10進法ではありません。256進法です。その仕組みは次のとおりです。
(2 8 ) 2 または65536(セレクタ内のIDの数)の倍数
- (2 8 ) 1 またはセレクタのクラス名の数の256倍
- (2 8 ) 0 または1、セレクタ内のタグ名の数の倍
これは、コンセプトを伝えるための裏技的な練習としてはあまり実用的ではありません。
そのためか、このトピックに関する記事では、10進法が使われています。
***** [Operaは2を使用 16 (を使っています(karlcowさんのコメント参照)。他のいくつかのセレクタエンジンは 無限大 - を使うものもあります(Simon Sapinのコメント参照)。
2014年7月、更新。
Blazemongerが今年の初めに指摘したように、Webkitブラウザ(Chrome、Safari)は現在、256よりも高いベースを使用しているようです。おそらく 2
16
Opera のような?IEとFirefoxはまだ256を使用しています。
2021年3月の更新です。
Firefoxは256を基本として使用しなくなりました。
関連
-
[CSSチュートリアル】シングルセレクトの折りたたみメニュー機能を実現するCSS
-
[CSSチュートリアル]CSSは、2列のレイアウト、固定幅の左側、適応するためのさまざまな方法の右側を達成するために
-
[CSSチュートリアル】タイトルを上部に配置するスティッキーレイアウトを実現するためのCSS
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] CSSの三角形はどのように機能するのですか?
-
[解決済み] CSSのdisplayプロパティで遷移する
-
[解決済み] CSSのクラス名/セレクタに使用できる文字は?
-
[解決済み] CSSセレクタの"~"(チルダ/スクイグル/ツイドル)はどういう意味ですか?
-
[解決済み] CSSセレクタの「+」(プラス記号)の意味は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル]CSSで簡単!高周波な異形ボタンを実現する方法
-
[CSSチュートリアル]z-indexの違い。cssのz-index: 0とz-index: autoの違い。
-
[CSSチュートリアル】検索ボックスの非表示機能を実現するCSS(アニメーションの順送り・逆戻りシーケンス)
-
[CSSチュートリアル】CSSのクラスとidの共通命名規則
-
[CSSチュートリアル]css display table adaptive height, widthの問題解決
-
[CSSチュートリアル]cssの位置固定コードで左右2重の位置決め
-
[CSSチュートリアル】ピュアCSSでDIVホバーを実現するサンプルコード(固定位置編)
-
[css3]Apple携帯電話のロック解除のためのCSS3サンプルフォントシャインエフェクト
-
[css3]css3によるフレックスレイアウト幅の解決方法が有効でない件
-
[CSSチュートリアル】CSSで実現できるのなら、わざわざJavaScriptを使う必要はない