前端实现浏览器CSS兼容

2020-06-15  本文已影响0人  夜天丶枫铭
  1. 浏览器样式加载不一致的原因
    网页由浏览器通过浏览器内核对其进行解析,而不同的浏览器内核对网页的解析存在不同。因而,同一页面在不同的浏览器上显示存在差异。
    (略:浏览器内核的不同导致页面渲染不一致)
  2. 市面上的主要浏览器及其使用的浏览器内核
浏览器名称 浏览器内核 私有属性
IE浏览器 Trident(也称IE内核) -ms-
火狐浏览器 Gecko -moz-
Safari Webkit -webkit-
Opera Blink(基于Webkit) -o-
Chrome Blink(基于Webkit) -webkit

浏览器实现CSS兼容处理

标记 IE6 IE7 IIE8 FF Opera Safari
[*+><] X X X X
- X X X X X
\9 X X X
\0 X X X X
* +html .bb X X X X X
bb{
height:32px;
background-color:#f1ee18;/*所有识别*/
background-color:#00deff\9; /*IE6、7、8识别*/
+background-color:#a200ff;/*IE6、7识别*/
_background-color:#1e0bd1;/*IE6识别*/
}
@media screen and (-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{} /*safari(Chrome) 有效 */
.bb, x:-moz-any-link, x:default{background-color:#00ff00;}/*IE7 firefox3.5及以下 识别 */
@-moz-document url-prefix(){.bb{background-color:#00ff00;}}/*仅firefox 识别*/
* +html .bb{background-color:#a200ff;}/* 仅IE7 识别 */


/*一个用于展示的class为bb的div标签*/

< div class ="bb"></ div >
+   **HTML头部引用(if IE)hack**
```
    只在IE下生效
    <!--[if IE]>
    这段文字只在IE浏览器显示
    <![endif]-->

    只在IE6下生效
    <!--[if IE 6]>
    这段文字只在IE6浏览器显示
    <![endif]-->

    只在IE6以上版本生效
    <!--[if gte IE 6]>
    这段文字只在IE6以上(包括)版本IE浏览器显示
    <![endif]-->

    只在IE8上不生效
    <!--[if ! IE 8]>
    这段文字在非IE8浏览器显示
    <![endif]-->
```
注:*IE浏览器版本,如6、7、8,但IE10及以上版本已将条件注释特性移除,使用时需注意*
+ hack的书写顺序(按浏览器):FF IE7 IE6;

3.为什么不推荐使用CSS hack来解决兼容性问题
CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法。滥用hack会导致浏览器更新之后产生更多的兼容性问题。

  1. hack三大原则
上一篇 下一篇

猜你喜欢

热点阅读