W3C home > Mailing lists > Public > www-style@w3.org > February 2014

Re: Shadow DOM Encapsulation

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Fri, 7 Feb 2014 10:32:29 -0800
Message-ID: <CAAWBYDDMUwAGp1EzwVSQDUGdFaL9D8t6N4-0jbv_9o+j9iyayA@mail.gmail.com>
To: Peter Linss <peter.linss@hp.com>
Cc: www-style list <www-style@w3.org>
Peter Linss wrote:
> The only interesting thing here is that there's an implied > between all pseudo-elements and the rest of the selector, so:
> p::first-line
> is morally equivalent to:
> p > ::first-line
> That's the way Gecko at-least used to do it internally...
> We did this back in '98 or so in Gecko when building form controls out of "anonymous" boxes and hidden dom nodes (for content and event handling), essentially the 16 year-old precursor to today's shadow-dom. The interesting "anonymous" boxes each had a pseudo-element name and you could simply style them with normal CSS selectors.

On further thought, this doesn't work at all, at least not without
breaking the current model.  Let's take ::before as an example.

"p::before" selects the 'before' pseudo on the <p> element.  "p
::before" selects the 'before' pseudo on all descendants of <p>.

You said that in Gecko's old model, ::before is a hidden child of <p>,
so that "p::before" is morally equivalent to "p > ::before" (taking
"::before" as the tagname of the before pseudo, or something similar).
 Presumably the idea is that if there's no combinator between the
::before and its preceding selector, that implies a child combinator.

That means, though, that "p ::before" won't need any fixup, as it's
got a combinator.  But that then has a different meaning than what CSS
currently assigns it - it'll select the ::before pseudo of <p> *and*
its descendants, rather than just the ::before pseudo of its

Either the model needs to *further* special-case the descendant
combinator, or it changes the current meaning of selectors.

(Recall that I tried, probably two years ago, to get :: as a
combinator so we could explain pseudo-elements better within the
model. I ran into similar issues with the current syntax, and we
weren't willing to break things for it.  It sucks.)

Received on Friday, 7 February 2014 18:33:16 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:39:19 UTC