关于ie6出现的问题主要可以归结为以下几种情况把。
当然还存在各种原因,bug的情况也还有各种各样,我只是小结一下我自己经常遇到,比较有代表性的问题。会持续的更新。
1。浏览器本身存在的缺陷 比如:1》左浮动的元素,加了左补白(margin-left),就会出现双倍边距的问题。(我们可以尽量去避免这些问题,在不影响结构和其他样式的情况下,可以用左边距(padding-left),虽然两者在语意上是有区别的。)
2》绝对定位元素的1像素间距bug,当绝对定位元素的父元素高或宽为奇数时,bottom和right会产生错误,唯一的解决办法就是给父元素定义明确的高宽值,但对于液态布局没有完美的解决方法。(我的解决方法是针对ie6写了一个:_bottom:-1px;)
2。与标准的不同(触发布局的方式和其他浏览器不同)
比如:浮动的清除(关闭)
1.Overflow : hidden;
2.设置高宽
3.clear:both;
4.Zoom:1;
5.还有专门的浮动清除的类:
.clearfix:after {content:"\200B"; display:block; height:0; clear:both; }
.clearfix { *zoom:1; }.
这是因为在ie中触发布局的方式和其他浏览器不同。所以有时候在代码中加zoom:1;是非常有用的。
3。不支持一些元素或者方法(这些元素或者方法出现在ie6出现之后)
比如:
1.透明读属性opacity。在ie6,7,8中都是无效的,我们可以用filter来代替:opacity: 0.5; filter:alpha(opacity=50);但是考虑到性能问题,也可以直接不考虑低级版本浏览器。
2.如果是png图片透明问题的话可以加一个滤镜的插件(可以到网上搜一下具体用法):
<!--[if IE 6]>
<script type="text/javascript" src="/js/DD_belatedPNG-min.js"></script>
<script>
DD_belatedPNG.fix("#foot_logo,img,background");
</script>
<![endif]-->
3. css3中的一些样式效果,比如圆角,阴影之类的都是用渐进增强,平稳退化的原则。
4. JSON.stringify方法ie6.7是不支持的。如果要考虑ie6.7需要用其他方法。