About
Declaration are syntactic expressions that are contained in a declaration block to create a rule
A declaration:
- is either empty
- or has two parts (separated by a colon (:) and optionally surrounded by space):
Because of the way selectors work, multiple declarations for the same selector may be organized into semicolon (;) separated groups.
Once, the style has been loaded, there is a computation taking place that may be not the value of the declaration.
Example
Legal
Thus, the following rules:
h1 { font-weight: bold }
h1 { font-size: 12px }
h1 { line-height: 14px }
h1 { font-family: Helvetica }
h1 { font-variant: normal }
h1 { font-style: normal }
are equivalent to:
h1 {
font-weight: bold;
font-size: 12px;
line-height: 14px;
font-family: Helvetica;
font-variant: normal;
font-style: normal
}
A property name is an identifier. Any token may occur in the value. Parentheses (“( )”), brackets (“[ ]”), braces (“{ }”), single quotes (') and double quotes (“) must come in matching pairs, and semicolons not in strings must be escaped. Parentheses, brackets, and braces may be nested. Inside the quotes, characters are parsed as a string.
Illegal
A user agent must ignore a declaration with an invalid property name or an invalid value. Every CSS 2.1 property has its own syntactic and semantic restrictions on the values it accepts.
For example, assume a CSS 2.1 parser encounters this style sheet:
h1 { color: red; font-style: 12pt } /* Invalid value: 12pt */
p { color: blue; font-vendor: any; /* Invalid prop.: font-vendor */
font-variant: small-caps }
em em { font-style: normal }
The second declaration on the first line has an invalid value '12pt'. The second declaration on the second line contains an undefined property 'font-vendor'. The CSS 2.1 parser will ignore these declarations, effectively reducing the style sheet to:
h1 { color: red; }
p { color: blue; font-variant: small-caps }
em em { font-style: normal }