- From: Ernest Cline <ernestcline@mindspring.com>
- Date: Sun, 30 May 2004 11:21:30 -0400
- To: "Anne van Kesteren (fora)" <fora@annevankesteren.nl>
- Cc: "W3C CSS List" <www-style@w3.org>
From: Lachlan Hunt <lachlan.hunt@iinet.net.au>
>
> Anne van Kesteren (fora) wrote:
>
> >
> >> Content generated with the ::before and ::after pseudo-elements does
> >> not actually modify the content of the element; only the way it is
> >> presented, and thus does not affect whether or not another selector
> >> matches. The background colour should be red.
> >
> >
> > I see. How about:
> >
> >
> > <test/>
> >
> > test{ background:red;
> > content:"PASS" }
> > test:contains('PASS'){ background:lime }
> >
> >
> > Personally, I don't see a difference here and I think that they all
> > should have a green background (which stands for PASS, obviously).
>
> That's right, there is no difference. The generated content doesn't
> actually affect the contents of the element in the document, only the
> way it is presented. Thus, they all should be red.
>
> What about this:
> <test>foo</test>
>
> test:contains('foo') { content: 'bar' }
>
> According to your logic, first the selector would match, the contents
> would be changed, then it would no longer match, so it would be changed
> back, then it would match again...
In addition, the definition of how to determine what matches :contains()
is quite explicit: "The textual contents of a given element is determined
by the concatenation of all PCDATA contained in the element and
sub-elements." That definition is totally unaffected by anything that
styling does to the displayed content.
For example:
<test>foo<bar>baz</bar>bat</test>
bar {display:none}
test {background:red}
test:contains(baz) {background:blue}
would give the test element a blue background.
Received on Sunday, 30 May 2004 11:21:35 UTC