W3C home > Mailing lists > Public > www-style@w3.org > March 2008

RE: [CSS3] ltr and rtl pseudo-class proposal

From: Alan Gresley <alan@css-class.com>
Date: Mon, 17 Mar 2008 04:45:49 -0700
To: Andrew Fedoniouk <news@terrainformatica.com>
cc: www-style@w3.org, robert@ocallahan.org
Message-ID: <20080317044549.f8d1e42eb1f8db40312f41775502f7f0.abd15fa34f.wbe@email.secureserver.net>

Andrew Fedoniouk wrote:

> I simply forgot to respond, my pardon.

Well I was incorrect. Don't we often ignore ridiculous suggestions and just pretend we didn't see it. :-)

> > Anyhow, to put an end to this whatever, please see this text case.
> > 
> > http://css-class.com/test/css/selectors/attribute-dir1.htm
> > 
> > 
> > [dir="ltr"] {background:red}
> > [dir="ltr"] [dir="rtl"] {background:blue}
> > 
> > 
> > It will work in most UAs.
> > 
> Alan, first of all you've forgot about the case:
> <body dir="rtl">
>    <h1>Hello</h1>
> </body>
> and the second:
> Selector *:rtl means exactly following:
> "element that has nearest parent (including itself)   with defined 
> attribute @dir and that @dir attribute has exactly "rtl" value.
> In other words: :rtl matches *any* element in rtl environment 
> established by itself or one of its parents.
> That is different from what you have defined.

Pseudo-classes are slightly different.

li:hover a {background:red}
li:focus a {background:red}
li:rtl a {background:red}

Then I could have.

li:hover {background:blue}
li:focus {background:blue}

All the above occurs after a user action. This is not a user action

li:rtl {background:blue}

but rather an attribute belonging to the source. How can this be described as a pseudo-class? You are talking about a parent or ancestor element with a particular attribute. Almost no selector like that exist in CSS at this current time.

> In general request "element with nearest parent having defined A of 
> exactly value S" is not solvable in terms of CSS selectors for arbitrary 
> elements / DOM trees.
> -- 
> Andrew Fedoniouk.
> http://terrainformatica.com

I did give the following example in my reply to Fantasai.

*<[dir="rtl"], * *<[dir="rtl"] {background:lime}

That is all wrong because really I want something more like this (disregard the syntax).

*~<[dir="rtl"] {background:lime} /* the first ancestor encountered with rtl direction */

Moving back to the pseudo-class example.

a:focus<li<ul {background:lime}

But I have seen this as

ul(li>a:focus) {background:lime}

which would style the element before the string of descenders. I won't try that with your proposal since it would be nonsense. Your proposal operates more like namespace selectors.

[dir="rtl"]|li {background:lime}


Received on Monday, 17 March 2008 11:46:35 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:27:34 UTC