- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Thu, 10 Nov 2011 03:34:48 +0100
- To: Karl Dubost <karld@opera.com>
- Cc: Daniel Glazman <daniel@glazman.org>, Peter Linss <peter.linss@hp.com>, Larry Masinter <masinter@adobe.com>, www-archive@w3.org
Why not view the CSS validator as a 'vendor' and introduce a
pseudo-element look-alike ':experiment' selector, with the purpose of
flagging use of experimental properties, simply to avoid validation of
such features?
\::experiment, div {foo:*;} /*Validator doesn't validate this*/
The :experiment flag's purpose would in principle only to suppress
validation error messages while experimenting with (formally invalid)
experimental properties. Everything that is flagged this way, must be
experimental. Ordinary properties would be forbidden behind this flag.
Also, vendor prefixed properties would be forbidden behind such a
selector:
\::experiment, div {-webkit-foo:*;} /* Does not validate */
The :experiment selector has the *shape* of a pseudo-element, but does
not select anything. However, it must be used correctly, like a
pseudo-element selector, in order to have its intended effect.
Conforming legacy UAs that do support this selector, must - according
to the CSS parsing rules - skip over the entire style rule. To assure
that this works even in IE7, the type selector \: should be either
RECOMMENDED or REQUIRED.
:experiment, div {foo:*;} /* Works but should perhaps be invalid */
\::experiment, div {foo:*;} /* Should be recommended or required */
The main effects of this proposal:
a) No need for vendor prefixes - good for vendors + authors.
b) Avoids that experimental properties cause a massive error
list during validation = CSS validation becomes useful again
c) Places the burden of being valid on the author: On that day
when the status of property 'foo' moves from experimental to
implemented, nothing changes, except that author must remove
:experiment selector, if validity is a goal.
WHAT TO PERHAPS AVOID:
The following extension of the above perhaps seems tempting:
* Make experimental properties *require/depend on* being used
together with the :experiment selector in order to have any
effect at all.
But a downside of that option is that when the property becomes
official, some legacy user agents would still be in need of the
:experiment selector, in order to work. Thus the author would have to
choose between being valid and supporting more UAs. If possible, one
should not have to make that choice.
--
Leif Halvard Silli
Received on Thursday, 10 November 2011 02:35:33 UTC