RE: More controlled degrading, @supported at-rule

Benjamin D. Smedberg wrote:
> You can specify a bare property name or a property:value.
> 
> @supported [ opacity; position: fixed; ] { #myel { color: red; } }
> 
> so #myel would only be red if the UA supports the "opacity" property
> *and* the "fixed" value for the "position" property.
> 
> --BDS

It almost looks like a 'feature selector'. And it doesn't specify a way to
determine whether a CSS3 module is implemented or a CSS2 specification part.


I certainly like the idea, but I would go for specifying the modules and
specifications that are required for the rule blocks instead. For example:

@supported [ CSS3-Color; ] { #myel { color: blue; } }

The introduction draft states that "Once a module has been chosen, all of
its features must be supported.". So when I specify that my rules should
only applied when the UA supports the CSS3 Color module, then that is the
way it should be. Not by using endless if-conditions on determining whether
a particular feature of the specification/module has been implemented (such
as opacity).
When the @supported rule is understood by the UA, but the conditions are not
understood, then the complete ruleblock must be ignored. And when, for
example, Microsoft knows that it hasn't completely implemented the CSS3
Color module, then it must ignore this ruleblock. This also encourages
developers to implement the full module spec, and not only parts of it.

- Daniël Pelsmaeker

Received on Friday, 17 September 2004 15:09:59 UTC