ie常见兼容问题

问题:
1、在IE6下面出现双倍margin:页面中元素在浮动时设置margin ie6会出现双倍距离——解决办法:在float的标签样式中加入display:inline;
2、IE6,7里
3、在IE6里的间距比超过设置的间距——解决办法:overflow:hidden;
4、子元素绑架父元素问题(没有border,padding时)IE6,7没有这个问题——解决办法:触发bfc(如overflow:hidden);
5、高度塌陷时也用触发bfc解决——但是(IE6触发bfc不行)因为IE6,7不支持bfc; 但它们有个hasLayout(是否为布局标签)属性,返回一个布尔值;
以前就让hasLayout为true(以前IE6,7解决这个问题办法)来解决;设置 room:1(不为normal都行);触发IE6,7的hasLayout为true(类似bfc);
ps:触发IE中的hasLayout用zoom:1(不为normal);注意:如果要触发bfc需将IE中的hasLayout也触发;
6、图片默认间距问题——解决办法:用float为<img/>布局:
7、最小高度(min-height)兼容问题:IE6不支持min-height属性——解决办法:在IE6中设置_height;因为在IE6中设置height时,内容过大会自动撑开;
或者在height:100px !important;IE6识别不了!important;
8、最小宽度(min-width)兼容问题:IE6不支持min-属性——解决办法(css表达式,在css中嵌入js,最好不用):
_expression(documentElement.clientWidth<500?"500px":"auto");

9、Overflow Bug
在IE6/7中,overflow无法正确的隐藏有相对定位position:relative;的子元素。解决方法就是给外包容器.wrap加上
position:relative;。

10: 横向列表宽度bug
如果你使用float:left;把<li>横向摆列,并且<li>内包含的<a>(或其他)触发了 hasLayout,在IE6下就会有错误的
表现。解决方法很简单,只需要给<a>定义同样的float:left;即可。

11: 列表阶梯bug
列表阶梯bug通常会在给<li>的子元素<a>使用float:left;时触发,我们本意是要做一个横向的列表(通常 是导航栏),
但IE却可能呈现出垂直的或者阶梯状。解决办法就是给<li>定义float:left;而非子元素<a>,或者 给<li>定义
display:inline;也可以解决。

12: 垂直列表间隙bug
当我们使用<li> 包含一个块级子元素时,IE6(IE7也有可能)会错误地给每条列表元素(<li>)之间添加空隙。
解决方法:把<a>flaot并且清除float来解决这个问题;另外一个办法就是触发<a>的hasLayout(如定 义高宽、
使用zoom:1;);也可以给<li> 定义display:inline;来解决此问题;另外还有一个极有趣的方法,给包含的文
本末尾添加一个空格。

13: IE6调整窗口大小的 Bug
当把body居中放置,改变IE浏览器大小的时候,任何在body里面的相对定位元素都会固定不动了。解决办法:
给body定义position:relative;就行了。

14: 文本重复Bug
在IE6中,一些隐藏的元素(如注释、display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug。
解决办法:给浮动元素添加display:inline;。

原文地址:https://www.cnblogs.com/xiaosuzhijia/p/4822721.html