是否!重要的是在IE6中不起作用?

时间:2010-06-17 02:31:38

标签: css cross-browser internet-explorer-6

!important在IE6中不起作用吗?如果我们也需要IE6兼容性,那么我们不应该使用!important

1 个答案:

答案 0 :(得分:6)

当具有!important的规则是选择器中该属性的最后一条规则时,IE6支持!important。

这听起来有点令人困惑,但是如果你声明一个!important高度,它必须是给定选择器中'height'的最后一个声明。

因此请考虑以下示例:

#selector { height: 100px; height: 150px !important; }
Result: All browsers: 150px;

#selector { height: 100px; height: 150px !important; }
td#selector { height: 200px; }
Result: All browsers: 150px;

#selector { height: 100px; height: 150px; }
td#selector { height: 70px; height: 200px !important; }
Result: All browsers: 200px;

#selector { height: 100px !important; height: 150px; }
Result: All modern browsers but ie6: 100px; ie6: 150px;

#selector { height: 100px !important; height: 150px; }
td#selector { height: 200px; }
Result: All modern browsers but ie6: 100px; ie6: 200px;

#selector { height: 100px; height: 150px; }
td#selector { height: 70px !important; height: 200px; }
Result: All modern browsers but ie6: 70px; ie6: 200px;

ie6做的是解析每个选择器的'height'值作为选择器中存在的最后一个'height'声明(其他规则可能适用,但我相信这是你的标准情况)。然后它根据!important和选择器特异性规则从所有这些中选择最具体的“高度”。它实际上忽略了不是选择器中最后一个的“高度”声明。

在根据!important和特殊规则比较选择器之前,其他浏览器在解析每个选择器的'height'值时会考虑'!important'。

这样做的一个“好处”是每个其他合理的浏览器都会使用您的“重要”样式,而ie6将选择该选择器中的最后一个规则声明。

尽管只有非常少量的ie6调整并且你想要将每一个作为ie6漏洞进行评论,但是使用ie6特定样式表会好得多。

心理榜样

想象一下,选择CSS规则是1)获得与元素匹配的所有规则,2)决定使用哪些规则。假设内联样式标签只是另一个选择器,除非我另有提及。

在所有其他浏览器中,如果您想获得元素的“高度”,它大致会这样做:

  1. 对于每个选择器,选择最后一个!重要高度(如果有),否则只选择最后一个高度。

  2. 选择最具体的选择器,其中所选的“高度”为!重要高度,否则为内联样式高度,否则为最具体的选择器。

  3. 在ie6中它大致如此:

    1. 对于每个选择器,选择最后一个高度。

    2. 选择最具体的选择器,其中所选的“高度”为!重要高度,否则为内联样式高度,否则为最具体的选择器。