IE 5.x/Win 和模型bug
这里是一个width:500px;margin:10px;padding:10px; border:10px;的一个盒子.
使用widht(空格)/**/:530px,解决IE5.x系列的盒解析bug,因为IE5.x系列浏览器能读到这句.在IE5.x Win,IE6.0 Win下效果一致.
如何使用hack解决IE5.x盒解析bug?
#content {
width:530px; //这个是错误的width,所有浏览器都读到了
voice-family: "\"}\""; //IE5.X/win忽略了"\"}\""后的内容
voice-family:inherit;
width:500px; //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
}
html>body #content { //html>body是CSS2的写法
width:500px; //支持CSS2该写法的浏览器有幸读到了这一句,IE 5.x不支持的。
}
#content {
width:500px !important; //这个是正确的width,大部分支持!important标记的浏览器使用这里的数值
width(空格)/**/:530px; //IE6/win不解析这句,所以IE6/win仍然认为width的值是300px;而IE5.X/win读到这句,新的数值(400px)覆盖掉了旧的,因为!important标记对他们不起作用
}
html>body #content { //html>body是CSS2的写法
width:500px; //支持CSS2该写法的浏览器有幸读到了这一句
}
<!--[if Lte IE6]>
#content {
width:530px
}
<[!endif]-->
这里是一个width:500px;margin:10px;padding:10px; border:10px;的一个盒子,IE5.x Win解析不正常。
IE6盒模型在向后兼容的同时也包容了以前的错误,IE6其实有两个核心,在旧的页面前他仍旧表现出对错误的宽容,只有在文档中严格地加上文档类型(
DOCTYPE)声明,IE6才能够接受正确的box-model所以,hack必须和正确的DOCTYPE同时包含在文档中才能够正常工作。