'initial' | 'inherit' inconsistency

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