- From: Adam Kuehn <akuehn@nc.rr.com>
- Date: Fri, 18 Nov 2005 15:33:56 -0500
- To: www-style@w3.org
Currently, implementations differ on how to treat the interaction of style attributes and !important style declarations in style sheets. IE/Win and KHTML give precedence to the !important declarations, while Gecko, Opera, and IE/Mac favor the attribute. The section of the spec dealing with this issue is ambiguous, so I would propose changing it to side with IE/Win and KHTML by reading as follows: "To find the value for an element/property combination, user agents must apply rules in the following priority order: 1. Find all declarations that apply to the element and property in question, for the target media type. Declarations apply if the associated selector matches the element in question. 2. Sort by importance (normal or important) and origin (author, user, or user agent). Those rules will apply from low priority to highest: A. user agent style sheets B. user normal style sheets C. author normal style sheets or attributes D. author important style sheets or attributes E. user important style sheets Note that the priority order assigned here is more important than the specificity score assigned in the following rule 3. (See the example in section 6.4.3 below.) 3. Prioritize by specificity of selector: more specific selectors will override more general ones. Pseudo-elements and pseudo-classes are counted as normal elements and classes, respectively. 4. Finally, prioritize by order specified: if two rules have the same weight, origin and specificity, the latter specified wins. Rules in imported style sheets are considered to be before any rules in the style sheet itself." Then alter the mentioned example in 6.4.3 to read this way: "<HEAD> <STYLE type="text/css"> #x97z { color: red !important } </STYLE> </HEAD> <BODY> <P ID=x97z style="color: green"> </BODY> In the above example, the color of the P element would be red. Note that the !important declaration takes priority over the style attribute because of cascading rule 2. In the absence of the !important declaration, however (or if both declarations were so marked), the color of the P element would be green. In that instance, the priority will be the same under cascading rule 2; however, the declaration in the "style" attribute will override the one in the STYLE element because of cascading rule 3, since it has a higher specificity." This would resolve the ambiguity squarely in favor of IE/Win and Safari; however, I think this resolution makes the most intuitive sense. While I would hate to force browsers into a state of non-compliance at this late stage, this question has arisen several times on the CSS-D list, and I therefore felt that the ambiguity was significant enough to consider resolving, even at "Last Call". Thank you, -Adam Kuehn
Received on Friday, 18 November 2005 20:34:06 UTC