- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Thu, 22 Oct 2009 10:29:22 -0700
- To: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- CC: www-style list <www-style@w3.org>
Leif Halvard Silli wrote:
>
> I think in reality you disagree with what I intended above.
>
> FIRSTLY:
>
> Change of position: I assume that both these are valid, right?
>
> *::marker {}/*Var1*/
> ::marker {}/*Var2*/
Yes.
> SECONDLY:
>
> Why do you specifically call out pseudo-elements? The current draft
> doesn't do that. [1]
That's the error we're trying to fix here.
> Or to ask differently, why isn't the following,
>
> *::marker{}
>
> a case of a simple selector sequence where the "*" - quoting the text -
> "is not the only component of a sequence of simple selectors"?
>
> 1) Isn't pseudo-element covered by the word 'component'?
> 2) If yes, then what is 'pseudo-element' a component of, if not of a
> 'simple selector sequence'?
> 3) If it is a component of a 'simple selector sequences', then it is
> unecessary and confusing to call it out (this is what has confused me)
A pseudo-element is not part of a simple selector sequence
because it is not a simple selector. It may be appended
to the simple selector sequence, but that does not make it
part of the simple selector sequence.
> THIRDLY:
>
> This is what the spec says about what kind of 'component' a
> pseudo-element is:
>
> The "simple selectors" definition paragraph says: [2]
>
> ]]A simple selector is either a type selector, universal
> selector, attribute selector, class selector, ID selector, or
> pseudo-class. One pseudo-element may be appended to the last
> sequence of simple selectors in a selector.[[
>
> Even if this paragraph defines the list of simple selectors,
> pseudo-element is not described as a simple selector. But it IS
> described as an appendix to a simple selector sequence. Thus it ought to
> be considered a component of a simple selector sequence, even if it
> (may) not (be) a simple selector itself.
No. "component" means "constituent part". If I append X to Y,
X doesn't become a component part of Y. It becomes a constituent
part of X + Y.
> 3 paragraphs further down it is said, however:
>
> ]]An empty selector, containing no sequence of simple selectors and no
> pseudo-element, is an invalid selector.[[
>
> Here the pseudo-element is not considered part of the simple selector
> sequence.
Exactly.
> The pseudo element definition says: [3]
>
> ]]Only one pseudo-element may appear per selector, and if present it
> must appear after the sequence of simple selectors that represents the
> subjects of the selector.[[
>
> Here too, pseudo-elements are not considered part of the simple
> selectors sequence.
Right.
> However, the text about the negation pseudo class talks about both the
> negation pseudo-class and the pseudo-elements as simple selectors (why
> else would it, inside the same parenthesis, specifically exclude them
> both from "simple selectors"?): [4]
>
> ]]The negation pseudo-class, :not(X), is a functional notation taking
> a simple selector (excluding the negation pseudo-class itself and
> pseudo-elements) as an argument. It represents an element that is not
> represented by the argument.[[
This is also an error, that has already been fixed in the Editor's Draft.
See the discussion at
http://lists.w3.org/Archives/Public/www-style/2009Mar/0130.html
> The grammar section also considers pseudo-elements are part of a simple
> selector sequence - it says about pseudo-elements that they "occur only
> in the last simple_selector_sequence" - thus it is clearly a 'component'
> of a simple selector sequence: [5]
>
> ]]
> pseudo
> /* '::' starts a pseudo-element, ':' a pseudo-class */
> /* Exceptions: :first-line, :first-letter, :before and :after. */
> /* Note that pseudo-elements are restricted to one per selector and */
> /* occur only in the last simple_selector_sequence. */
The grammar is written this way because the grammar for
pseudo-classes and pseudo-elements intersect. The names
of the productions here are not definitions, they are
merely suggestive; the grammar could have been written
using numerical references but it's harder to understand
that way.
> According to section 1.3 of CSS3 selectors, "the components of" a simple
> selector sequence are called "simple selectors": [6]
>
> ]]what was referred to in CSS2 as a simple selector is now called a
> sequence of simple selectors, and the term "simple selector" is now used
> for the components of this sequence[[
>
> Thus, a pseudo-element, being a component of a sequence of simple
> selectors, should itself be a simple selector.
A pseudo-element is not a simple selector.
http://lists.w3.org/Archives/Public/www-style/2009Mar/0129.html
> CONCLUSIONS
>
> * Simple selector sequences are made up of two kind of components:
> - simple selectors
> - pseudo elements
This statement is false. Simple selector sequences are made up of
simple selectors ONLY.
> * 'Components of simple selectors' are not properly defined
"Components of simple selectors" is not used anywhere in the
specification, so it doesn't matter whether it is defined or not.
~fantasai
Received on Thursday, 22 October 2009 17:29:59 UTC