IE6 浏览器兼容问题 ie6 浏览器兼容问题是什么

第一,IE6, 不支持小于12px的盒子, 任何小于12px的盒子, 在IE6中看都大

解决办法很简单, 就是将盒子的字号, 设置小(小于盒子的高), 比如0px。

height: 4px;
_font-size: 0px;

我们现在介绍一下浏览器hack。hack就是"黑客", 就是使用浏览器提供的后门, 针对某一种浏览器做兼容。

IE6留了一个后门, 就是只要给css属性之前, 加上下划线, 这个属性就是IE6认识的专有属性。

比如:

_background-color: green;

第二,IE6不支持用overflow:hidden;来清除浮动的

解决办法, 以毒攻毒。追加一条

_zoom:1;

完整写法:

overflow: hidden;
_zoom:1;

实际上, _zoom:1; 能够触发浏览器hasLayout机制。这个机制, 不要深究了, 因为就IE6有。我们只需要让IE6好用, 具体的实现机制, 有兴趣的同学, 自行百度。

强调一点, overflow:hidden;的本意, 就是溢出盒子的border的东西隐藏, 这个功能是IE6兼容的。

不兼容的是overflow:hidden;清除浮动的时候。

我们刚才学习了两个IE6的兼容问题, 这两个IE6的兼容问题, 都是通过多写一条hack来解决的。

这个我们称为伴生属性。

height:6px;
_font-size:0;
overflow:hidden;
_zoom:1;

关于margin的IE6兼容问题

IE6双倍margin bug

当出现连续浮动的元素, 携带和浮动方向相同的margin时, 队首的元素, 会双倍marign。

<ul>
<li></li>
<li></li>
<li></li>
</ul>

解决方案:

1)使浮动的方向和margin的方向, 相反。

所以, 你就会发现, 我们特别喜欢, 浮动的方向和margin的方向相反。并且, 前端开发工程师, 把这个当做习惯了。

float: left;
margin-right: 40px;
*{
margin: 0;
padding: 0;
}
ul{
border: 1px solid #000;
height: 100px;
list-style: none;
}
ul li{
float: left;
width: 120px;
height: 40px;
margin-left: 40px;
background-color: orange;
}
ul li.no1{
margin-left:20px;
}
<ul>
<li class="no1"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

2)使用hack(没必要, 别惯着这个IE6)

单独给队首的元素,写一个一半的margin

<li class="no1"></li>
ul li.no1{
_margin-left:20px;
}
IE6的3px bug
*{
margin: 0;
padding: 0;
}
div{
width: 400px;
height: 400px;
background-color: orange;
}
div p{
margin-right: 10px;
float: right;
width: 100px;
height: 100px;
background-color: green;
}
<div>
<p></p>
</div>

绿色儿子, 右浮动, 用margin-right踹了脚父亲, 结果IE6中多了3px。比如本来是margin-right:10px; 结果是13px

IE6, 千万不要跟他死坑、较劲, 不是为了让你成为IE6的专家, 是为了提高面试的成功率。

原文链接:,转发请注明来源!