Browser Compatibility

                                                     Browser Compatibility

1.   每个浏览器的默认值不一样,所以我们在写CSS的时候,首先得重置标签的margin值和Padding值等,例如:(这个一个reset.css文件,每个页面都要link这个文件)

       html, body, h1, h2, h3, h4, h5, h6, p,ol,  ul, li, pre, code, address,variable, form, fieldset,  blockquote              {

           padding: 0;

          margin: 0;

          font-size: 100%;

         font-weight:normal;

   }

       table { border-collapse: collapse;border-spacing: 0; }

      td, th, caption { font-weight: normal;text-align: left; }

      img, fieldset { border: 0; }

       ol { padding-left: 1.4em; list-style:decimal; }

      ul { padding-left: 1.4em;list-style:square; }

      q:before, q:after { content:''; }

2.      "\9" 例:"border: 1px \9;".这里的"\9"可以区别所有IEFireFox.

  "\0" IE8IE9识别,IE6IE7不能.

  "*"   IE6IE7可以识别IE8FireFox不能.

"_"  IE6可以识别"_",IE7、IE8、FireFox不能. 

background-color:blue\9\0; 仅IE9支持;

 

 

 

 

 

 

 

            各浏览器CSS hack兼容表:(如表2.1)

     

 

    IE  6

  IE 7

  IE 8

   IE 9

 Chrome 

 Firefox

Safari

   !important

 

     Y

   Y

    Y

     Y

    Y

   Y

         -

    Y

 

 

 

 

 

 

        *

    Y

     Y

 

 

 

 

 

       *+

 

     Y

 

 

 

 

 

       \9

    Y

     Y

   Y

   Y

 

 

 

       \0

 

 

   Y

   Y

 

 

 

       \9\0

 

 

 

   Y

 

 

 

nth-of-type(1)

 

 

 

 

 

 

     Y

                                          表2.1  各浏览器CSS hack兼容表

 

 

3.cursor:pointer可以同时在 IE FF中显示游标手指状, hand IE 可以

 

4. 设置为floatdivIE下设置的margin会加倍。这是一个IE6都存在的bug。解决方案是在这个div里面加上display:inline;

 

5.IE不认得min-这个定义,但实际上它把正常的widthheight当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-widthmin-height的话,IE下面根本等于没有设置宽度和高度。

  解决方案:min- width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div>放到body>标签下,然后为div指定一个类,然后CSS这样设计

#container{min-width: 600px; width:expression(document.body.clientWidth < 600? "600px": "auto" );}

 

6. DIV浮动IE文本产生3象素的bug

7.IE捉迷藏的问题

div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。

有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。

8. IE6-7下为什么图片下有空隙产生

解 决这个BUG的方法也有很多,可以是改变html的排版,或者设置 img为display: block 或者设置vertical-align属性为 vertical-align: top | bottom |middle |text-bottom 都可以解决.

9. 为什么web标准中IE无法设置滚动条颜色了

解决办法是将body换成html


10.UL的padding与margin

ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题


11.最狠的手段
- !important;

如果实在没有办法解决一些细节问题,可以用这个方法.FF对于”!important”会自动优先解析,然而IE则会忽略.如下
.tabd1{
background: url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Stylefor FF*/
background: url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}
值得注意的是,一定要将xxxx !important 这句放置在另一句之上。

12. FF下给div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)


13. 居中问题
.
      1).垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)
      2).水平居中.margin: 0 auto;(当然不是万能)


14. 若需给
a 标签内内容加上 样式, 需要设置 display: block;(常见于导航标签)


15. FF 和
IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下margin加倍等问题.


16.  
ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)

     而在IE中只有margin有值。

     解决:

        定义ul{margin:0;padding:0;}就能解决大部分问题。


17. 作为外部
wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应.

18. IE6 不支持伪类和伪元素

           伪类:

                    a:hover

        伪元素:

               :before

               :after

               :first-child

              :last-child

              :focus

19.  关于高度问题

        问题:如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。

            如果设定了高度,内容过多时,IE6下会自动增加高度,其他浏览器会超出边框。

       解决:

1.     设置overflow: hidden;

2.     高度自增height: auto !important; height:100px;   

20. list-style-position默认值的问题

     问题:

        IE下list-style-position默认为inside, Firefox默认为outside

     解决:

        CSS中指定为outside即可解决兼容性问题。

21. list-style-image准确定位的问题

问题:

    li 前设置图片时,图片与其后的文字对齐问题

解决:

1. 采用背景定位和字符缩进的方法

 background:url() no-repeat left center;

 text-index: 10px;

2. 采用相对定位方法

 li 设置list-style:url();

 li 的子元素position: relative; top:-5px;

22. IE6 width为奇数,右边多出的问题的问题: 父级元素采用相对定位,且宽度设置为奇数时,子元素采用绝对定位,在ie6中会出现右侧多出1像素

解决:将宽度的奇数值改成偶数

 

 

 

                             

你可能感兴趣的:(compatibility)