兼容性问题及解决方案

工作中常见的兼容性问题及解决方式

  1. png24位的图片在IE6上出背景,解决方案是 做成png8即可 。

  2. 不同的浏览器打开的时候,会有8px左右的误差,为统一规格,解决方式为 {padding:0px; margin:0px}。

  3. IE6的双边距BUG:块属性标签shenfloat后,又有横线的margin情况下,在IE6显示margin比设置的大。浮动IE产生的双倍距离里#itcast{float:left;width:10px;margin:0 0 0 100px;}这种情况下,IE会产生20px的距离,解决方案是 float的标签样式控制中加入_display:inline;将其转化为行内属性。("_"这个符号只有IE6会识别)。

  4. IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAtttibute()获取自定义属性;但在Firefox下,只能使用getAtttibute()来获取自定义的属性。解决方式: 统一使用getAtttibute()来获取自定义的属性。

  5. IE下,even对象有x,y属性,但没有pageX和pageY属性,Firefox下,event对象有pageX和pageY属性,但没有x和y属性。解决方式: (条件注释)缺点是IE浏览器可能会增加额外的HTTP请求数。

  6. Chrome中文界面下默认会将小于12px的文本强制按照12px来显示,解决方式: 可通过加入css属性:-webkit-text-size-adjust:none;解决。

  7. 超链接访问过后的样式hover样式就不出现了,被点击访问过的超链接样式不在具有hover和active了。解决方式: 改变css属性的排列顺序:L-V-H-A(a:link{} a:visited{} a:hover{} a:active{})。

  8. 背景透明:opacity在IE下无效。解决方式: 非IE:opacity=.1;IE:filter: alpha(opacity=10)。

  9. 子元素会继承透明属性:父元素设置了透明度,则子元素也会透明。解决办法:非IE:background:rgba(0,0,0,0.6);IE:filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000)。
    插入圖片

  10. 宽度解析不同:在Ie6中width(宽度)包括padding,在其他浏览器中width不包括padding。解決方法:使用过滤器。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    a.下划线属性过滤器
    当在一个属性前面增加了一个下划线后,由于符合标准的浏览器不能识别带有下线的属性而忽略了这个声明,但是在IE6及更低版本浏览器中会继续解析这个规则。
    语法:选择符{_属性:属性值;}
    b. !important关键字过滤器
    它表示所附加的声明具有最高优先级的意思。但由于IE6及更低版本不能识别它,我们可以利用IE6的这个Bug作为过滤器来兼容IE6和其它标准浏览器。
    语法:选择符{属性:属性值!important;}
    c. *属性过滤器
    当在一个属性前面增加了*后,该属性只能被IE7浏览器识别,其它浏览器混略该属性的作用。
    语法:选择符{*属性:属性值;}
    d. \9:IE版本识别;其它浏览器都不识别
    语法:选择符{属性:属性值\9;}
    e. \0:IE8 及以上版本识别;其它浏览器都不识别
    语法:选择符{属性:属性值\0;}
  11. 最大、最小宽、高问题:IE不识别min-width、min-heigh、max-width、max-heigh。解决办法:div{width: auto;height: auto;min-width: 200px;min-height: 200px;} http://www.divcss5.com/wenji/w194.shtml 只有ie6不支持 ie7都支持。

  12. IE6下默认行高:IE6下无法设置低于14px高,原因是由其默认行高引起的。解決办法:声明:overflow:hidden;或者line-height:1px。

  13. 居中问题:IE6下在使用margin:0 auto;无法使其居中。解決办法:为其父容器设置text-align:center。

  14. baseline:各种元素的baseline不同,导致同样高度的行内元素无法垂直对齐。解決方法:vertical-align:middle。