- From: Eric A. Meyer <eric@meyerweb.com>
- Date: Thu, 28 Oct 2010 10:29:19 -0400
- To: www-style@w3.org
Howdy all,
As I've been going through the various CSS3 modules, I've come to
be rather frustrated by the enormous inconsistencies surrounding the
'initial' and 'inherit' keywords.
(And if this has come up before and been settled, then please
direct me to the discussion and accept my apologies for needlessly
re-raising it. I searched the archives but didn't come up with
anything.)
As things stand, http://dev.w3.org/csswg/css3-cascade/ and
http://www.w3.org/TR/css3-values/ both say that all CSS3 properties
accept" 'initial' and 'inherit'. Okay, that sounds easy. But then
you hit:
* Modules which don't explicitly list either value in their
property definitions but say somewhere (often, though not always, in
the Introduction) that all properties accept both (for example,
http://www.w3.org/TR/css3-linebox/). This isn't very clear to
readers of the specification.
* Modules which don't explicitly list either in their property
definitions but say somewhere (often, though not always, in the
Introduction) that all properties accept 'inherit' while not
mentioning 'initial' (for example,
http://www.w3.org/TR/css3-background/). The implication is that
'initial' is not applied to properties in that module.
* Modules which make no statement about either 'initial' or
'inherit' AND don't reference http://dev.w3.org/csswg/css3-cascade/
nor http://www.w3.org/TR/css3-values/ (for example,
http://www.w3.org/TR/css3-animations/ or
http://www.w3.org/TR/css3-gcpm/). Thus, formally speaking, those
properties accept neither.
* Modules which make no statement nor refer to
http://dev.w3.org/csswg/css3-cascade/ nor
http://www.w3.org/TR/css3-values/ but which explicitly define
'inherit' to apply to all defined properties (for example,
http://www.w3.org/TR/css3-fonts/). The implication is that 'initial'
is not applied to properties in that module.
* Modules which make no statement nor refer to
http://dev.w3.org/csswg/css3-cascade/ nor
http://www.w3.org/TR/css3-values/ but which explicitly define
'inherit' to apply to some, though not all, defined properties (for
example, http://www.w3.org/TR/css3-box/ or
http://www.w3.org/TR/css3-speech/). The implication is that
'initial' is not applied to properties in that module and 'inherit'
is not applied to some properties in that module.
At no point did I find a module simply list BOTH 'initial' and
'inherit' explicitly in their property definitions, though I admit I
didn't go through the low-priority modules. The closest I got was
modules like http://www.w3.org/TR/css3-fonts/ which consistently
listed 'inherit' (but made no mention of 'initial').
And then there's
http://www.w3.org/TR/css3-linebox/#drop-initial-value and
http://www.w3.org/TR/css3-linebox/#inline-box-align, both of which
appear to define a different 'initial' (or is it?) in their property
definitions than the 'initial' which is applied to all properties per
the text at the beginning of that module.
This last seems like a perfect illustration of the problem in not
explicitly listing 'initial' and 'inherit' for all properties. It's
possible to forget that they apply, or to miss that fact altogether.
Leaving them out isn't increasing clarity, it's increasing confusion.
It looks like it's doing that for specification authors as well as
page authors. Possibly even for implementors.
My strong recommendation is that all properties simply explicitly
list all value keywords they accept, whether or not they are
"universal" Thus, all properties should have " | initial | inherit"
at the end of the value definition. Or, if those keywords don't
actually apply to all CSS3 properties, then obviously they should be
listed only on those properties that accept them and not on those
that don't. As things stand now, it's a huge mess and it's going to
lead to interoperability problems at some point. Explicitly listing
all keywords would eliminate the confusion.
--
Eric A. Meyer (eric@meyerweb.com) http://meyerweb.com/
Received on Thursday, 28 October 2010 14:29:53 UTC