- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Wed, 9 Dec 2009 12:42:36 -0600
- To: fantasai <fantasai.lists@inkedblade.net>
- Cc: www-style <www-style@w3.org>
On Wed, Dec 9, 2009 at 1:48 AM, fantasai <fantasai.lists@inkedblade.net> wrote:
> bz asked me to post a proposal on feature queries: syntax for allowing
> authors to apply CSS rules based on whether a particular CSS feature
> is supported.
>
> The key here is to check against a property+value pair, not a general
> feature class. The UA already makes a support claim for property+value
> pairs when it chooses to parse and cascade them.
>
> My proposal is two syntaxes. The first is an at-rule, which is handy if
> part of the style sheet depends on a major CSS feature such as Tempate
> Layout.
>
> @supports ( declaration-block ) {
> ruleset
> }
>
> e.g.
>
> @supports ( display: "bc"; ) {
> body { ... }
> .sidebar { ... }
> .main { ... }
> }
>
> This could potentially support media-query like operators like 'and'
> and 'not'.
I definitely like this, because as you say, it puts the support
declaration at the same level as what's already used. This makes me
happy.
We will *definitely* need and/or/not operators. Otherwise we'll have
to do some very annoying/confusing hacking to specify, frex, a
float-based layout by default and then a template-based one in a
@supports block.
(This will end up being at least somewhat necessary anyway due to
legacy clients that don't understand @supports, but let's not make it
last longer than it has to.)
> The second is a !important-like syntax: all declarations with !supported
> must be supported for the style rule to take effect. This could be useful
> for more localized constructs, like changing text color depending on
> text-shadow support.
>
> tag {
> background: white;
> color: gray;
> }
>
> tag {
> color: white;
> text-shadow: black 0 0 4px !support;
> }
>
> (This second bit is mostly keyed off my earlier proposal for !required,
> which would also take into account the results of cascading, and tie
> the effect of the no !required rules into the cascading success of the
> !required rules.)
This seems like a much worse idea for backward-compat reasons. Legacy
clients that don't understand !support will blithely apply the
color:white and just ignore the next line like normal.
Okay, so, the @support rule. This lets us feature-test for
properties, and for recognized values. This is great. I don't yet
see a way to test for selectors, though. I'd like that included
somehow before this gets made a proper draft.
~TJ
Received on Wednesday, 9 December 2009 18:43:11 UTC