- 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