内容目录
网上许多与CSS Hack相关的文章中说,在css的属性值和分号之间添加字符\0
,可以实现对IE 8或 IE 9的CSS hack(有的说,仅支持IE8)。
网上的示例是这样的:
.css-hack {
color: red; /* 其他浏览器显示红色 */
color: blue\0; /* IE8、IE9 显示蓝色 */
+color: green; /* IE7 显示绿色 */
_color: brown; /* IE6 显示棕色 */
}
通过实际测试发现,关于使用字符\0
实现的上述CSS Hack有3点需要注意。
1、IE10也能够识别添加了字符\0
的css属性值(笔者这里没有IE 11,不知道IE 11是否也能识别)。
2、属性值和\0
之间不能有空格,有一个空格的话(例如:blue \0
),在IE 8中就失效了,仅对IE 9/IE 10有效。
3、如果我们只想对IE 8/IE 9进行CSS Hack呢?这个时候,我们去掉后面两行与IE6、IE7有关的代码。
.css-hack {
color: red; /* 其他浏览器显示红色 */
color: blue\0; /* IE8、IE9 显示蓝色 */
}
这个时候,在IE 6、IE 7浏览器中,你会发现你看到的不是红色,而是黑色(也就是默认的字体颜色)!
这是因为一般浏览器的思路是,先过滤掉无效的css属性值,然后再从正确的属性设置中根据优先级获取最后面的css属性值。而IE 6/7浏览器不是先过滤掉无效的属性值,而是先根据优先级,获取最后面的css属性值,然后再来判断该属性值是否,无效就忽略掉。因此,如果按照网上所说,仅仅使用\0
来实现IE 8+的CSS Hack,则会对IE6/7中的显示效果造成破坏。你必须通过额外的css属性设置来复原IE6/7的样式。
因为,我们不能够简单地下结论说,使用\0
可以实现对IE 8、IE 9甚至IE 10 +的CSS Hack。
0 条评论
撰写评论