P粉5233350262023-08-24 00:41:41
###良い質問。
よくわかりません - 私が見つけた記事はすべて、
ここ のような複数のクラスの例を避けています - しかし、比較の特異性に関しては クラス セレクター間のものであると推測しています。および ID の場合、クラスは、それがどれほど詳細であっても、値 15 にのみ評価されます。
ただし、
にはクラスのスタックが必要です。なぜなら リーリー ###比較する### リーリー より具体的に言うと、私の唯一の説明は、スタックされたクラスの特異性は、ID に対してではなく、相互に対してのみ計算されるということです。
更新: なんとなく分かりました。これはポイント制ではないため、クラスの重みが 15 ポイントであるという情報は誤りです。これは 4 つの部分から成る番号付けシステムについて非常によく説明されており、
ここで見つけることができます。 開始点は 4 つの数字です: リーリー W3C の特異性の説明によると、上記のルールの特異性の値は次のとおりです。
リーリーこれは、非常に大きな (未定義?) 基数を持つ番号付けシステムです。
私の理解では、基数が非常に大きいため、列 4 の数値は列 3 の 0 より大きい数値を超えることはできず、列 2 にも同じことが当てはまり、列 1 にも同じことが当てはまります。この理解は正しいでしょうか? 数学をよく理解している人がこの番号付けシステムと、個々の要素が 9 より大きい場合に 10 進数に変換する方法を説明できるかどうか疑問に思いました。
P粉9208354232023-08-24 00:06:43
Pekka の答え は実際には正しく、おそらくこの質問について考える最良の方法です。
ただし、多くの人がすでに指摘しているように、W3C CSS 勧告には、「(大基数体系の) 3 つの数値 a-b-c を連結すると、具体性が得られます。」と記載されています。は。
この標準アルゴリズムを実装する「非常に大きなベース」(少なくとも 4 つの最も一般的に使用されるブラウザでの)は 256 または 28 であることが判明しました。 これは、0 個の ID と 256 個のクラス名で指定されたスタイルは、1 個の ID のみで指定されたスタイルをオーバーライドすることを意味します。いくつかのフィドルでテストしました:
をカバーするには不十分です (2012/8/15 更新 -- !重要 ## を使用する必要があります) #)
8
)2 または 65536、セレクター内の ID の数を乗算した値 (2
8***** [Opera は 2
16
infinity を使用します。実際にはポイント システムはありません (Simon Sapin のコメントを参照)。 ] 2014 年 7 月更新:
今年初めに Blazemonger が指摘したように、Webkit ブラウザ (Chrome、Safari) は現在、256 よりも高いベースを使用しているようです。 Opera のような 216 でしょうか? IE と Firefox は依然として 256 を使用します。
2021 年 3 月更新:
Firefox は 256 をベースとして使用しなくなりました。