Errata for the CSS1 specification (revision of 11 Jan 1999):

This document is currently not maintained. The CSS working group is developing CSS 2.1. When features common to CSS1 and CSS 2.1 are defined differently, please consider the definition in CSS 2.1 as errata for CSS1. While CSS 2.1 is a Working Draft, the errata are to be considered proposed errata.

Translations of the specification are available. A PDF version of the specification has been kindly provided by Lawrence Oluyede.

These are the known errors in the CSS1 specification (revision of 11 Jan 1999). The dates in [] indicate when each erratum was added to this page.

Section 1.1 Containment in HTML

[2004-08-10]In the 2nd sentence, replace “define” by “defines”.

Section 2.5 Pseudo-elements in selectors

[2002-12-04] In the second example, replace the final "</A>" by "</P>".

Section 2.3 The 'first-line' pseudo-element

[2001-09-24] Add the following clarification:

In case a certain first line is the first line of some block-level element A as well as of A's ancestor B , the fictional tag sequence is as follows:

        This is the first line

All fictional tags for first-line are inside the smallest enclosing block-level element and the nesting order of the fictional tags A:first-line and B-first-line is the same as that of the elements A and B .

The "first formatted line" of a block level element is the first line in the element's flow, i.e., ignoring any floats. For example, in

  <p style="float: left">Floating paragraph...</p>
  <p>First line starts here...</p>

the selector 'div:first-line' applies to the first line of the second p, because the first p is taken out of the flow.

Section 5.2.5 'font-weight'

[2000-07-04] In the last paragraph, replace "others may have eight different face weights" with "others may have nine different face weights."

Section 5.4.6 'text-align'

[2001-06-26] "Since 'text-align' inherits, all block-level elements inside the 'DIV' element with 'CLASS=center' will be centered." This is ambiguous. Intended is: "... all line boxes of all block-level elements..."

Section 5.4.2 'letter-spacing'

[2000-07-04] Replace "which is a value of the 'align' property" by "which is a value of the 'text-align' property."

Section 5.5.15 'border-width'

[2000-07-04] Replace "'border-width-top', 'border-width-right', 'border-width-bottom' and 'border-width-left'" by "'border-top-width', 'border-right-width', 'border-bottom-width' and 'border-left-width'."

[2002-01-09] In the 3rd line of the example, replace the comment "thin thick medium thin" by "thin thick medium thick".

Section 5.5.17 'border-style'

[2005-04-27] The definition of the value should be: [ none | dotted | dashed | solid | double | groove | ridge | inset | outset ]{1,4}

Section 5.5.22 'border'

[2000-07-04] In this example, add a semicolon (;) after line 3:

  border-color: red;
  border-left: double;
  color: black;

[2000-07-04] Below the example, remove "while the other borders are red." (The other border are not displayed, because their style is 'none'.)

Section 5.6.2 'white-space'

[2001-08-28] The 'white-space' property applies to all elements, not just block-level elements.

Section 6.1 Length units

[2001-08-28] The suggested reference pixel is based on a 96 dpi device, not 90 dpi. The visual angle is thus about 0.0213 degrees instead of 0.0227.

Section 7.1 Forward-compatible parsing

[2006-06-02] Add an “s” after “continue” in the sentence “A CSS1 UA that encounters an at-rule that starts with an at-keyword other than '@import' ignores the whole of the at-rule and continues parsing after it.”

Section 8 References

[2007-05-25] The target anchors for references [12], [13] and [14] are off by one. Activating the link to [12] actually jumps to reference [13], etc.

Appendix E: The applicability and extensibility of CSS1

[2005-10-03] Replace 'H1 { font-style: small-caps }' by:

H1 { font-variant: small-caps }

Proposed errata

The following are not errata, but proposals for a revision of CSS level 1. They have working draft status and will need review before they can be integrated into a new Proposed Recommendation for CSS1.

Section 3.2 Cascading order

[2002-02-28] Replace list item 4 ("Sort by specificity" ... "normal elements and classes, respectively.") with the following:

Sort by specificity of selector: more specific selectors will override more general ones. To find the specificity of a selector or or the 'STYLE' attribute of an element (see section 1.1 for an example), count 1 if the selector is in a style attribute and 0 otherwise (a), count the number of ID attributes in the selector (b), the number of CLASS attributes in the selector (c), and the number of tag names in the selector (d). Concatenating the four numbers (in a number system with a large base) gives the specificity. Some examples (sorted from least specific to most specific):

LI            {...}  /* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */
UL LI         {...}  /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */
UL OL LI      {...}  /* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */
LI.red        {...}  /* a=0 b=0 c=1 d=1 -> specificity = 0,0,1,1 */
UL OL LI.red  {...}  /* a=0 b=0 c=1 d=3 -> specificity = 0,0,1,3 */
#x34y         {...}  /* a=0 b=1 c=0 d=0 -> specificity = 0,1,0,0 */
style="..."          /* a=1 b=0 c=0 d=0 -> specificity = 1,0,0,0 */

Pseudo-elements and pseudo-classes are counted as normal elements and classes, respectively.

Remove the text "A declaration in the 'STYLE' attribute" ... "because of cascading rule number 5."

Bert Bos
Last modified: $Date: 2009/03/11 15:03:07 $