浏览器兼容

2017-05-23  本文已影响0人  cheneyzhangch

1. 什么是 CSS hack

由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能在不同的浏览器中也能得到我们想要的页面效果。

2. 处理浏览器兼容的思路

2.1 先确定要不要兼容

2.2 做到什么程度,

2.3 如何做

渐进增强(progressive enhancement):

针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
确保最基本的功能,然后做出更好的效果,适用于受众为IE6 7的客户

优雅降级 (graceful degradation):

一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
确保高端浏览器的效果,然后尽可能去覆盖低版本浏览器

3. 列举5种以上浏览器兼容的写法

3.1 条件注释 (适用于IE 6 7 8 9,但是IE10开始不再支持条件注释)

 <!--[if IE 6]>
    <p>You are using Internet Explorer 6.</p>
    <![endif]-->
    <!--[if !IE]><!-->
    <script>alert(1);</script>
    <!--<![endif]-->
    <!--[if IE 8]>
    <link href="ie8only.css" rel="stylesheet">
    <![endif]-->

3.2 CSS hack属性前缀法

利用 IE6能识别下划线和星号,IE7能识别星号,但不能识别下划线"",IE6~IE10都认识“\9”的特性,给属性前面加上特定浏览器能识别的字符,以实现对特定浏览器的兼容

.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}

3.3 CSS hack选择器前缀法

利用 IE6能识别下划线和星号,IE7能识别星号,但不能识别下划线"",IE6~IE10都认识“\9”的特性,给选择器前面加上特定浏览器能识别的字符,以实现对特定浏览器的兼容

*h1{
  color: red;
}

3.4 使用Modernizr

3.5 使用html5shiv.js

4. 以下工具/名词是做什么的

适用于优雅降级向下兼容,使其兼容IE6 IE7 IE8

5. 一般在哪个网站查询属性兼容性?

caniuse.com:查询CSS属性兼容性
browserhacks:查hack的写法

常见属性的兼容情况:

上一篇 下一篇

猜你喜欢

热点阅读