Re: [css3] Specificity mechanism issue

On 3/30/10 9:28 PM, Jens O. Meiert wrote:
> In CSS 1, the selector “a b c d e f g h i j” has the specificity 10,
> same as “.a” [2].

No, it doesn't.

> In CSS 2, the selector “a b c d e f g h i j” has the specificity 10,
> same as “.a” [3].

Again, no.

> In CSS 2.1, the selector “a b c d e f g h i j” has the specificity
> 0,0,0,10, less specific than “.a” which has 0,0,1,0 [4].

Not quite.  In CSS2.1 you still do the concatenating thing, no?

> In CSS 3, the selector “a b c d e f g h i j” has the specificity 10,
> same as “.a” [5].

No.

> (I don’t understand that when the specs are talking about
> concatenation, there would be a difference between “a b c d e f g h i
> j”’s 10 and “.a”’s 10. Please correct me if I’m wrong, and if I am,
> let’s maybe make things more clear in the specs.)

You're wrong because the concatenation includes all the counts involved. 
  So for the "a b c d e f g h i j" case you concatenate a 0 (for IDs), 0 
(for classes), and 10 (for the tags).  For ".a" you concatenate a 0, 10, 
and 0.

Done in base 16, for example, you get 00A and 0A0 respectively.  These 
are quite different, and the latter is bigger.

I personally think that the "large base" thing is not worth the 
confusion it engenders and the specificity should just be an ordered 
4-tuple of natural numbers, with the 4-tuples ordered in a dictionary 
ordering.  The spec would probably need to explain the dictionary 
ordering thing, but it would be less confusing than the concatenation stuff.

I'll note that the example specificities given in CSS2.1 are already 
given as 4-tuples, which is what might have confused Jens into thinking 
the specificity is a 4-tuple in CSS2.1.

-Boris

Received on Wednesday, 31 March 2010 02:27:40 UTC