IE HACK
在理想世界里,正确的 应该在任何支持 的浏览器里工作良好。不幸的是,我们并不是生活在理
想的世界里,浏览器们布满了 和不一致。创建一个跨浏览器并且显示一致的页面, 开发者必须
想尽办法。通过使用 和未实现的 ,开发者就能够为不同的浏览器应用不同的规则。 和
是开发者强有力的武器。了解各种常用的 以及它们如何工作,是件重要的事,但什么时
候用和什么时候不用它们,也是件同等重要的事情。
或者 是一种代码,用来根据浏览器类型,版本号显示或隐藏 标签。浏览器们对
行为有不同的解释,对 标准的支持程度也不相同。过滤器经常用于在多个浏览器中实现一致的
布局外观,因为某些浏览器无法渲染。(黑客)这样的称呼多少有点消极,实质上属于个人对
代码非官方的修改,误导人们以为还有更好的方法达到目的,但其实我们没有,有的人喜欢用 (补
丁)来称呼它,这样人们就能知道这本是浏览器造成的错误。
反斜线符号
这种 利用了一个在 平台上的 的 。以!"#结束的注释在 上是不正确关闭的,所以那
些需要被忽略的语句可以放在这种注释后面。
#"在 上忽略下面的语句 !"#
$%&'''$($''')
#"忽略结束 "#
盒模型 hack
*适用于 + 以下版本,
叫它“盒模型 -是因为它经常被用于解决 的盒模型错误,这个 可以为 和其它浏览器设置不
同的属性。(在版本 + 时, 已经修正了这个盒模型错误。)
./&0
01234中的宽度560
07%8/(39!9)!9960
07%8/(3:6
01234其它浏览器中的宽度56
)
/;%2(./&
01234其它浏览器中的宽度56
)0
第一个,把 7%8/( 设置为字符串9)9,但是 的解析 会把它当作一个反斜线加右括号。选择
7%8/( 是因为它不会影响到页面样式。第二个规则,使用了 /;%2(<是为 =>'? 以前浏
览器,它也有这样的解析错误,但幸好它支持子选择器,所以有这样较简单的方法。
下划线 hack
*适用于 + 及其以下版本,