Re: CSS3 missing selector

2009/3/23 Brad Kemper <brad.kemper@gmail.com>:
>
> On Mar 23, 2009, at 6:15 AM, Giovanni Campagna wrote:
>
>> 2009/3/23 Dave Smith <smithd7@tcd.ie>:
>>>
>>> Hi www-style
>>>
>>> I believe there is a useful and yet missing selector. I'll explain by a
>>> rough example:
>>>
>>> <section>
>>> <h1 or h>My section heading</h1 or h>
>>> <p>Para</p>
>>> <p>Para</p>
>>> <p>Para</p>
>>> <p>Para</p>
>>> </section>
>>>
>>> Given the above, to style the section content so that it is indented by
>>> 20px, but leave the heading with no margin can be done with:
>>>
>>> ..section > *:not(h1) {margin-left:20px;}
>>
>> You could also use ".section > p"
>
> Not unless you are sure that all of the block-level content at that level is
> going to be paragraphs, on all of the pages you apply the style sheet to.

His example was rather short and specific (and usually you want to
indent paragraphs, not tables)

>
>> (or negative margins, or text-indent, but this is not relevant to the
>> selector)
>>
>>> but what if the following could be done:
>>>
>>> h1:content {margin-left:20px;}
>>> A pseudo element wraps the content, based on heading scope, and is then
>>> styled.
>>>
>>> and
>>>
>>> h1:section { }
>>> A pseudo element wraps the heading and content, based on heading scope,
>>> and
>>> is then styled.
>>
>> 1) Pseudo-elements use two colons: "::section" and "::content"
>> 2) It should always be avoided having pseudo-elements targeting real
>> elements (instead of CSS generated ones)
>
> It could just as easily be a CSS generated wrapper that was more similar to
> h1:content , but also included the heading.

What do you mean wiht "also included the heading"? What boxes should
the pseudo-element target / create and what should the resulting CSS
tree look like?

>> 3) Something similar to this was already proposed [1]:
>
> Usually when the same general idea keeps coming up from different people, it
> is because there is a perceived need or benefit.

In fact, I do agree that I would be a very good feature to have.

>> :heading(<level>)
>> pseudo-class to select elements that estabilish an heading at that
>> level (according to the relative language)
>>
>> :section(<level>)
>> pseudo-class to select elements that estabilish a section at that
>> level (according to the relative language)
>>
>> For example, :heading(2) matches "h2" or  "section > section > h" in
>> XHTML2
>> :section(1) matches "body" in HTML5
>>
>>> Apart from being easy to read, one possible advantage is in backwards
>>> compatibility with old documents (without section elements) that they
>>> could
>>> be styled just as easily as new ones. Plus it just feels good, at least
>>> to
>>> me.
>>
>> Well, old documents don't use new features, so they won''t get much
>> benefits from this.
>
> Sure they do. All the time. It is often possible to have a new CSS file when
> it is not possible to replace all the HTML on an entire site.

I'm not sure about that, and consider that in plain HTML4 it is easier
to write "h4" than ":heading(4)", but this is definitely not relevant:
once a feature is specified and implemented, it can be used
everywhere.

>>> all the best
>>> Dave
>>> ---
>>> Dave Smith, 01 896 3976, smithd7@tcd.ie, Trinity Web Office
>>> Please CC the Web Office, webdes@tcd.ie, in correspondence
>>> Please note that electronic mail to, from, or within the College may be
>>> the
>>> subject of a request under the Freedom of information Act
>>>
>>
>> Anyway, Selectors Level 3 is currently a Last Call WD, so new features
>> won't be accepted. You should wait until Selectors Level 4.
>
> Its not too arly to start making a list of things we'd like to see in
> Selectors Level 4, is it?

Well, there is already one at <http://wiki.csswg.org/spec/selectors4>
but I still think that it is too early to talk about Level 4.
Selectors Level 3 are yet to finish.


Giovanni

Received on Monday, 23 March 2009 16:17:17 UTC