代码改变世界

部分CSS浏览器兼容问题与方法

2012-02-27 15:08  spring120  阅读(175)  评论(0)    收藏  举报

1.1    CSS中几种浏览器对不同关键字的支持,可进行浏览器兼容性重复定义。 !important 可被FireFox和IE7识别 ,* 可被IE6、IE7识别 ,_ 可被IE6识别 ,*+ 可被IE7识别。

 

1.2    IE专用的条件注释

     <!--其他浏览器 --> <link rel="stylesheet" type="text/css" href="css.css" />

        <!--[if IE 7]> <!-- 适合于IE7 --> <link rel="stylesheet" type="text/css" href="ie7.css" /><![endif]--> <!--[if lte IE 6]> <!-- 适合于IE6及一下 --><link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->

 

1.3    几个浏览器对实际像素的解释
        IE/Opera:对象的实际宽度 = (margin-left) + width + (margin-right)
        Firefox/Mozilla:对象的实际宽度= (margin-left) + (border-left-width) + (padding- left) + width + (padding-right) + (border-right-width) + (margin-right)

 

1.4    鼠标手势问题:FireFox的cursor属性不支持hand,但是支持pointer,IE两个都支持;所以为了兼容都用pointer。

 

1.5    FireFox中设置HTML标签的Style属性时,所有位置、宽高和尺寸值必须后跟px,IE也支持此写法,因此统一加px单位。如 Obj.Style.Height = imgObj.Style.Height + ‘px'。

 

1.6    消除ul、ol等列表的缩进时,样式应写成:list-style:none;margin:0px;padding:0px;其中margin属性对IE有效,padding属性对FireFox有效。

 

1.7    CSS控制透明:IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60); FireFox:opacity:0.6。

 

1.8    CSS控制圆角:IE:不支持圆角;
     FireFox: -moz-border-radius:4px;或
   -moz-border-radius-topleft:4px;
     -moz-border-radius-topright:4px;
     -moz-border-radius-bottomleft:4px;
     -moz-border-radius- bottomright:4px;

 

1.9  CSS双线凹凸边框:IE:border:2px outset;

     FireFox:-moz-border-top-colors: #d4d0c8 white;

           -moz-border-left-colors: #d4d0c8 white;

         -moz-border-right-colors:#404040 #808080;

         -moz-border-bottom-colors:#404040 #808080;

 

1.10  IE支持CSS方法cursor:url()自定义光标样式文件和滚动条颜色风格;FireFox对以上两者均不支持。

 

1.11  IE有Select控件永远处于最上层的bug,且所有CSS对Select控件都不起作用。

 

1.12  IE支持Form中的Label标签,包括图片和文字内容;FireFox不支持包含图片的Label,点击图片不能让标记 label for 的Radio或CheckBox产生效果。

 

1.13  FireFox中的TextArea不支持onScroll事件;

 

1.14  对超链接的CSS样式设置最好遵从这样的顺序:L-V-H-A。即<style type="text/css"><!-- a:link {} a:visited {}   a:hover {}  a:active {}  --></style>,这样可以避免一些访问过后的超链接就不具备hover和active样式了。

 

1.15  IE中设置长段落自动换行在CSS中设置word-wrap:break-word;FireFox中使用JS插入 的方法来实现,具体代码如下:

    <script type="text/javascript">  /* <![CDATA[ */

     function toBreakWord(el, intLen){  

    var obj=document.getElementById(el); var strContent=obj.innerHTML;

    var strTemp="";

    while(strContent.length>intLen){

      strTemp+=strContent.substr(0,intLen)+" "; strContent=strContent.substr(intLen,strContent.length);

       }

     strTemp+=" "+strContent;
    obj.innerHTML=strTemp;
    }
    if(document.getElementById && !document.all) toBreakWord("div_id", 37);
    /* ]]> */

  </script>

 

1.16  在子容器加了浮动属性后,该容器将不能自动撑开,解决方法:在标签结束后下一个标签中加上一个清除浮动的CSS clear:both。