分享

css解决IE6,IE7,firefox兼容性问题

 ls02 2011-03-25
///////////////////////////////////////////////////////////////////////////////////////
height:300px; 

   height:300px \9;    // " \9 " 只有  IE6、IE7、IE8  才可识别
   height:300px\0;     // " \0 " 只有IE8才可识别
  *height:300px;       // " * " 只有  IE6、IE7  才可识别
  _height:300px;       // " _ " 只有  IE6  才可识别
  *+height:300px;      // " * " 只有  IE7  才可识别
////////////////////////////////////////////////////////////////////////////////////

在当前IE6 IE7 FifeFox三分天下的情况下,浏览器兼容性问题成为网页设计者需要考虑的问题.   
区别不同浏览器的CSS hack写法:
区别IE6与FF:
        background:orange;*background:blue;
区别IE6与IE7:
        background:green !important;background:blue;
区别IE7与FF:
        background:orange; *background:green;
区别FF,IE7,IE6:
        background:orange;*background:green !important;*background:blue;

注:IE都能识别*;标准浏览器(如FF)不能识别*;

IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;

  IE6 IE7 FF
* ×
!important ×


------------------------------------------------------
另外再补充一个,下划线"_",
IE6支持下划线,IE7和firefox均不支持下划线。

于是大家还可以这样来区分IE6,IE7,firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。

 

 

1.css在不同浏览器下显示效果不同

firefox和IE对某些css样式的认定有不少区别,包括:

     * ul和ol的默认padding值是不一样的,在Firefox中,padding-left默认值为40px左右,而IE中为0,一般设置ul{margin:0;padding:0;}就能解决大部分问题
     * 对字体大小small的定义不同,Firefox中为13px,而IE中为16px,差别挺大,也只能设置为14px了事;(暂时没有发现)
     * 并列排列的多个元素(图片或者链接)的代码中的空格和回车会造成元素之间的间隙,而在firefox中和在IE中显示是不一样的,IE显示空格(约8px)、firefox显示空格(约4px)
     * 对不规范代码的兼容情况不同,IE中漏掉的关闭符号对显示不造成影响,而firefox中就会形成错乱的布局,而在ie中用到的padding和 margin的负值都会被firefox解析为0,易造成布局的混乱;(我觉得好像负值在firefox中也是有显示的)
     * firefox对于长高尺寸的严格解析会造成与设置不匹配(超出)的图片或表格将原设置div撑大;
     * !important属性可以在除IE浏览器的其他浏览器中起作用,因此有人利用这种差别来令一个CSS兼容多种浏览器;
     * 未定义id的div,在IE中会与div属性中的其他设置有关,而在firefox中的位置会于div在文件中位置有关,紧随前一个div出现……(有待尝试)
     * 设置为float的div在ie下设置的margin会加倍的,特别是margin-left,这是ie6的一个bug。解决的方法是在这个div里面加上display:inline;
     * 如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事)
     * FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行。IE里设置text-align:center,就居中了,但在FF中不行。所以一般两个都要设置。
     * FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width(也没感觉,觉得设了padding,大家的高宽都变了)
     * 在FF中可以实现的div 垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行。这种方法在IE中实现不了。(已试过!有用)
     * FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。
     * 在浮动(float)的div后加clear属性,这可以解决背景的自适应高度问题。怎么加才能让不同浏览器都好使?IE中有默认行高,这是要解决的问题。
     * FF中不支持文字的自动转行;什么word-wrap:break-word;word-break:break-all都是IE搞的鬼,根本就不符合css标准。(现在看到的解决办法都是通过编程实现)

2.css解决不同浏览器的兼容问题的方法 (不是我们需要的方法,我们要达到的要求是尽量不写!important也能解决)

解决这种问题可以通过规范css代码,使其符合两种规范的标准样式,也可以在差别处利用!important对firefox设置属性,或者针对多种浏览器分别各自配置合适的CSS文件,再通过判断浏览器选择不同CSS实现兼容性。

代码如下:

<!--[endif]-->

<!--[endif]-->

#example { color: #333; } /* FF*/
* html #example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7 */

这样在IE6中显示字体颜色是#666;在IE7中显示的字体颜色是#999;在FF中显示的颜色是#333

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多