css hack的几种方式:
- 基于浏览器解析错误的过滤器:IE for Mac带通过滤器
(利用css注释中的转义bug)
/*\*//*/
@import "ie5mac.css";
/**/
IE5 for Mac会错误地转义第二个星号,导致应用了@import规则
其他所有浏览器会正确的忽视转义元素,(因为它被放在注释中)
IE5 for Mac看到的代码是:
/* blah */
@import "ie5mac.css";
/**/
其他所有浏览器看到的是:
/* blah *//*
blah
/**/
星号HTML hack
(针对IE6及以下)正如我们知道的,html元素被认为是网页上第一个元素,即根元素。但是,IE的老版本中有一个匿名的根元素,它包围着html元素。所以我们可以利用这一点,使用通用选择器指定包围在另一个元素中的html元素,从而达到控制IE6及以下版本的浏览器的样式。
#content {
width:200px;
}
* html #content {
width:100px;
}
子选择器hack
我们知道,css的设计具有很强的向前兼容性:如果浏览器不理解某个选择器,那么它会忽略掉整个规则;如果它不理解某个属性或值,它就会忽略掉整个声明。 这样我们就可以放心大胆的使用高级浏览器。
html>body {
background-image: url(bg.png);
}
这条规则对于新版浏览器都可以正常显示,但IE5,IE6则会忽视。