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}


Alan

http://css-class.com/test/
Received on Monday, 17 March 2008 11:46:35 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:55:02 GMT