首页 > 代码库 > 常见ie6的浏览器兼容bug

常见ie6的浏览器兼容bug

1.文字本身的大小不兼容

同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,

ie下实际占高16px,下留白3px

ff 下实际占高17px,上留白1px,下留白3px

opera下就更不一样了

解决方案:给文字设定 line-height 。确保所有文字都有默认的 line-height 值。

2.ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,

而ie6下是会被内容撑大,高度限定失效,ie7,8,9都不会撑大。

所以不要轻易给容器定义height。

解决方案:height!important;min-height:100px;max-height: 200px

3.横向上的撑破容器问题

如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie下则会优先考虑内容折行。

解决方案:内容可能撑破的浮动容器需要定义width

4.double-margin bug

ie6下给浮动容器定义margin-left 或者margin-right 实际效果是数值的2倍。

解决方案:给浮动容器定义display:inline

5. 吞吃现象

还是ie6,上下两个div,上面的div设置背景,却发现下面没有设置背景的div 也有了背景,这就是吞吃现象。

对应上面的背景吞吃现象,还有滚动下边框缺失的现象。

解决方案:使用zoom:1

6.注释也能产生bug~~~

“多出来的一只猪。”这是前人总结这个bug使用的文案,ie6的这个bug 下,大家会在页面看到猪字出现两遍,重复的内容量因注释的多少而变。

解决方案:用“<!–[if !IE]> picRotate start <![endif]–>”方法写注释。

7.img 下的留白

如下代码:

<div>
<img src=http://www.mamicode.com/“1.jpg” />
</div>

把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写

1)<div>
<img src=http://www.mamicode.com/”1.jpg” />

解决方案:后面两个标签要紧挨着。

2)ie7下这个bug 依然存在。

解决方案:给img设定 display:block。

8. 失去line-height。

<div style=”line-height:20px”><img />文字</div>,很遗憾,在ie6下单行文字 line-height 效果消失了。

原因是<img />这个inline-block元素和inline元素写在一起了。

解决方案:让img 和文字都 float起来。

引申:大家知道img 的align 有 text-top,middle,absmiddle,可以尝试调整img 和文字让他们在ie和ff下能一致,你会发现怎么调都不会让你满意。

解决方案:索性让img 和文字都 float起来,用margin 调整。

9.clear层应该单独使用

也许你为了节省代码把clear属性直接放到下面的一个内容层,这样有问题,不仅仅是ff和op下失去margin效果,ie下某些margin值也会失效
<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>

10.ie 下overflow:hidden对其下的绝对层position:absolute或者相对层 position:relative无效。

解决方案:给overflow:hidden加position:relative或者position: absolute。

另,ie6支持overflow-x或者overflow-y的特性,ie7、ff不支持。

11.ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,这个div就会占满一整行,即使你给了宽度。

解决方案:float元素如果作为布局用或复杂的容器,都要给宽度

12.浮动元素之后跟着一个元素之间的有3像素的差距?

解决方案:浮动的元素:overflow:hidden;后面的元素设置_margin-left:-3px

常见ie6的浏览器兼容bug