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

Re: [selectors4] Universal Selector '*' (asterisk) elsewhere

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Thu, 29 Mar 2012 11:13:54 -0700
Message-ID: <CAAWBYDC7X=svQiBYky58iypJ6_xFcAcvH+gKgM0BGY1oDqRgjw@mail.gmail.com>
To: Christoph Päper <christoph.paeper@crissov.de>
Cc: www-style CSS <www-style@w3.org>
On Thu, Mar 29, 2012 at 2:25 AM, Christoph Päper
<christoph.paeper@crissov.de> wrote:
> The character ‘*’ can be used as a wildcard – meaning “any but not none” – for element names and namespaces. Level 4 also clarifies that it can be used with language (sub)tags in ‘lang()’. Should the asterisk be meaningful in other places, too?
>
>  #*            – any ID
>  .*            – any class
>  ::*           – any pseudo-element
>  :*            – any pseudo-class
>  :*()          – any parametric pseudo-class
>  :*(*)         – any parametric pseudo-class with any value
>  :*(foo)       – any parametric pseudo-class with a certain value
>  :foo(*)       – any value for a certain parametric pseudo-class
>  [*]           – any attribute
>  [*=*]         – any attribute with any value
>  [*=foo]       – any attribute with a certain value
>  [foo=*]       – any value for a certain attribute

For most of these, your variant is more-or-less equivalent to simply
omitting the selector entirely.  The slight difference from simply
omitting doesn't seem like it's of any use.

The one case that seems useful - selecting an element with a
particular attribute, regardless of its value - is already possible by
just putting the attribute name in the selector without a value.


> Note that
>
>  [foo*=bar]    – a certain attribute containing a certain string at least once in its value
>
> already has defined semantics. The asterisk is already meaningful in parametric pseudo-classes that expect a selector as an argument. Also consider that some parametric pseudo-classes accept math-like arguments, i.e. “An+B”, where the asterisk may look like a multiplication sign and thereby be confusing:
>
>  :foo(*n)      – any A
>  :foo(*)       – any B
>  :foo(+*)      – any B
>  :foo(-*)      – any B
>  :foo(*n+*)    – any A and any B

More confusing, I think, is the fact that all of these variants are
exactly equivalent to omitting it entirely, since they *all* represent
the entire set of integers.  (Or, if the pseudo also involves some
filtering, like :nth-of-type(), they're all exactly equivalent to just
using "n".)


> I haven’t tried to think of use-cases for any of this yet, but attribute names and probably values seem like a natural extension, because like element names they depend on the document language.

Thinking up use-cases should really be the first step of a proposal,
not the last.  ^_^

~TJ
Received on Thursday, 29 March 2012 18:14:42 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 22 May 2012 03:48:53 GMT