2012-08-17 11 views
7

私は最近このような状況に遭いましたが、「なぜ」を見つけることができませんでしたか? 誰でも説明できますか?これは、すべての記事で説明されてhttp://codepen.io/chriscoyier/pen/lzjqh「CSS 256クラスは1つのIDを上書きする」の背後にあるルールは何ですか?

+2

あなたがリンクを見つけることができれば、確かにあなたは説明を見つけることができます...それは文字通りウェブのいたるところで飾られています。 – BoltClock

+0

[CSS特有のポイント]の複製が可能です(http://stackoverflow.com/questions/2809024/points-in-css-specificity) –

+1

@My Head Hurts:実際はそうではありません...なぜポイントの説明に欠陥があるのか​​を説明していますここで説明されているバグには対処していません。 – BoltClock

答えて

11

これが仕様に誤りまたはどのブラウザによりブラウザの制限により起こり、そしてない

はで以下の例を参照してください。それを実装する。

specは言う次のよう

セレクタの特異性が計算される。

  • はクラスセレクタの数を数える(= A)
  • セレクタにIDセレクタの数を数えます、属性セレクタ、およびセレクタの擬似クラス(= b)
  • セレクタ(= c)のタイプセレクタと擬似要素の数をカウントする
  • ユニバーサルセレクタに他のようにカウントされ否定擬似クラス内部

セレクタを無視するが、否定自体は、擬似クラスとしてカウントされません。

a-b-cの3つの数字を連結して(大きな基数を持つ数字系で)、特異性が得られます。

ブラウザは、計算のために特定の値を整数として格納しなければならず、何らかの理由で256の値はブラウザによってオーバーフローを引き起こします。これは、通常、最大値が255である8ビットの符号なし整数で発生します。もう1つを追加すると、クラスレベルの特異性が何らかの形でIDレベルの値に「アップグレード」され、カスケード内のIDと等しくなり、それによってオーバーライドされます。

+0

私はこの答えがうまくいっていると思います。私はそれを拡張しようとしていたが、コメントにリンクされている質問を参照してください。私は、仕様とブラウザの実装の詳細との間に相違があるかどうかを説明する必要がある場合、私の答えを上に移動するかもしれません。 – BoltClock

+0

特異性がなぜ9nでキャップされていないのかという質問を始める。誰かが実際に9つ以上のクラス、属性、または疑似クラスを1つのセレクタに搭載する予定ですか?特定のスコアは10進数で保存されなければならず、無限の数のクラスが「90」<100のように1つのIDを決して出すことはできませんでした。 –

+1

@James Donnelly:セレクタ4は、実装が特異性値を制限し、オーバーフローすることを許さないと述べています。 – BoltClock

関連する問題