首页 > 代码库 > 常见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