- From: Øyvind Stenhaug <oyvinds@opera.com>
- Date: Thu, 14 Jan 2010 16:24:35 +0100
- To: "Tab Atkins Jr." <jackalmage@gmail.com>, "Alan Gresley" <alan@css-class.com>
- Cc: "www-style list" <www-style@w3.org>
On Thu, 14 Jan 2010 14:51:16 +0100, Tab Atkins Jr. <jackalmage@gmail.com>
wrote:
> On Thu, Jan 14, 2010 at 6:41 AM, Alan Gresley <alan@css-class.com> wrote:
(...)
>> .focusBlock header:first-descendant {
>> // style rules //
>> }
>>
>>
>> In theory you could also have last-descendant.
>>
>>
>> .focusBlock header:last-descendant {
>> // style rules //
>> }
>
> :last-descendant would actually be marginally easier to implement, if
> I'm thinking correctly, and plenty useful on its own (for many of the
> same reasons that jQuery's closest() method is so useful).
I'm not very familiar with typical implementation details, but I would've
thought it were the other way around. When checking for a first descendant
one would just need to walk up the tree, aborting if a header is found and
giving a match if a .focusBlock is found. When checking for a last
descendant it seems one would need to check the entire sub-tree of the
header.
Anyway, syntax-wise a combinator seems more natural than a pseudo-class. I
can't think of any other pseudo-class where determining a match depends on
what simple selectors there are earlier in the sequence.
--
Øyvind Stenhaug
Core Norway, Opera Software ASA
Received on Thursday, 14 January 2010 15:25:17 UTC