Re: CSS3 Selectors - :root

On Wed, Feb 16, 2011 at 7:10 PM, Karl Brightman <karl@karlbright.org> wrote:
> Hi,
>
> I have just discovered what I believe to be a bug with the way the :root
> pseudo class has been implemented.
>
> The specification states the following about this pseudo-class selector:
>
> "The :root pseudo-class represents an element that is the root of the
> document. In HTML 4, this is always the HTML element."
>
> What it does not describe is where the :root can be used, from what I have
> tried, it only works when used at the beginning of a selector.
>
> ":root p.test { color: red; }"
>
> However the following does not work:
>
> "p.test :root body { background: red; }"
>
> Am i missing something here or is this something that has not yet been
> addressed? I was hoping to be able to use the :root pseudo class to adjust
> styled based on whether or not an element can be found within the document.

You seem to slightly misunderstand how Selectors work.

Your first selector example is interpreted as "select all <p> elements
with a class of 'test' that have the root element as an ancestor".
This is a perfectly sensical selector.

Your second selector example, though, means "select all <body>
elements that are descendants of the root element, which is itself a
descendant of a <p> element with a class of 'test'".

The root element can never be a descendant of anything else in the
document, by definition.  Thus, your second selector will never match
anything, as ACJ correctly points out.

There is no way in the current Selectors spec to style an element
based on whether it contains another element, as you want to do.

~TJ

Received on Thursday, 17 February 2011 17:53:13 UTC