更严格的样式表分析
本节列出了 Internet Explorer 6 或更高版本在样式表分析方式上的变化。
当您使用 !DOCTYPE 声明打开符合标准的模式时,Internet Explorer 6 或更高版本会忽略不符合 CSS1 的样式表声明。更早版本的 Internet Explorer 允许您使用某些无效的声明,如在一个十六进制 RGB 值的开头遗漏了前导“#”符号。
样式表中的注释
根据 CSS1,您可以在样式表中使用文本注释,这种注释与 C 编程语言中使用的注释相似。C 语言注释以“/*”开始,以“*/”结束。对于更早版本的 Internet Explorer,您可以在样式表中使用 C 语言注释,也可以使用 HTML 注释。HTML 注释以“”结束。
下面的示例显示了 C 语言注释与 HTML 注释的区别。
/* Use C language comment blocks like this in your style sheets. */
<!-- Do not use HTML comments like this in your style sheets. -->
当您使用文档中的 !DOCTYPE 声明打开符合标准的模式时,对于 Internet Explorer 6 或更高版本,只允许 C 语言注释,但是有一点例外。那就是,您可以将样式表规则包含在一个 HTML 注释中。样式表可以包含在 HTML 注释块中,这样是为了让低级别的浏览器不会显示样式表中的文本。下面的示例演示了 HTML 注释在一个嵌入式样式表中唯一可接受的用法。
<style>
<!--
/* begin rules */
H1.blue { background-color:blue }
.
.
.
/* end rules */
-->
</style>
速记属性中的不可识别标记
根据 CSS1,当一个速记属性中存在不可识别标记时,整个速记属性设置都会被忽略。例如,"text-decoration: underline cross-out" 会被忽略,这就是因为“cross-out”是 text-decoration 属性的不可识别值。文本甚至不会添加下划线。
对于更早版本的 Internet Explorer,声明的分析在遇到第一个不可识别值时结束。因此,"text-decoration: underline cross-out overline" 可以使得文本添加下划线,但是不会添加上划线。上述情况会影响下列属性:font、background、background-position、text-decoration、margin、padding、border、border-top、border-right、border-bottom、border-left、border-color、border-width、border-style、list-style-image、list-style、clip、behavior、text-autospace 和 layout-grid。
部分字体属性设置
根据 CSS1,font 声明必须至少指定 font-size 和 font-family。例如,因为 "font: 14pt" 虽然具有 font-size,但是没有 font-family,所以它会被忽略。更早版本的 Internet Explorer 接受部分字体设置。
RGB 颜色缺少“#”字符
根据 CSS1,使用十六进制 RGB 值指定的颜色必须带有一个前导“#”符号。与更早版本的 Internet Explorer 一样,像 "FFFFFF" 这样的值会被忽略,而不会将其按照 "#FFFFFF" 进行处理(也称为 white)。上述情况会影响接受颜色值的所有属性。
缺少单位类型标识符会被视为像素值
根据 CSS1,长度值必须指定一个单元类型标识符,如 cm、mm、in、pt、pc 或 px。不带单位类型标识符的值,以及数字和单位类型标识符之间存在空格的值会被忽略。更早版本的 Internet Explorer 会将不带任何单位类型标识符的数字视为像素单位 — 就好像在该字符串后面附加了“px”一样。
在下面的示例中,当 !DOCTYPE 声明打开符合标准的模式时,两个属性都会被忽略。第一个属性之所以被忽略,是因为没有单位属性标识符。第二个属性被忽略则是因为数字和单位类型标识符之间存在空格。更早版本的 Internet Explorer 处理第一个属性的方式就好像该数字后面附加了“px”一样。第二个属性中数字和单位类型标识符之间的空格会被更早版本的 Internet Explorer 忽略。