!important
在IE6中不起作用吗?如果我们也需要IE6兼容性,那么我们不应该使用!important
?
答案 0 :(得分:6)
这听起来有点令人困惑,但是如果你声明一个!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)决定使用哪些规则。假设内联样式标签只是另一个选择器,除非我另有提及。
在所有其他浏览器中,如果您想获得元素的“高度”,它大致会这样做:
对于每个选择器,选择最后一个!重要高度(如果有),否则只选择最后一个高度。
选择最具体的选择器,其中所选的“高度”为!重要高度,否则为内联样式高度,否则为最具体的选择器。
在ie6中它大致如此:
对于每个选择器,选择最后一个高度。
选择最具体的选择器,其中所选的“高度”为!重要高度,否则为内联样式高度,否则为最具体的选择器。