饥人谷技术博客

浏览器兼容性探讨

2017-08-13  本文已影响21人  晓风残月1994

浏览器兼容性探讨


关于浏览器兼容的大致思路

  1. 首先要考虑的就是有没有必要做

    • 产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
    • 成本的角度 (有无必要做某件事)
  2. 如果要做兼容,那么做到什么程度

    • 让哪些浏览器支持哪些效果
  3. 如何做

    • 根据兼容需求选择技术框架/库(jquery)
    • 根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr)
      postCSS

什么是CSS hack

CSS hack,是一种用属性前缀、选择器前缀、以及IE条件注释法等hack技术,由于不同厂商,不同浏览器,不同版本中,对CSS的支持程度不同,表现方式也有差异。
因此为了,尽可能的缩小差异,达到不同浏览器中,都有较为一致的体验,因此需要用到CSS hack技术。
www.caniuse.com 网站中,可以查看各种HTML CSS 的浏览器兼容支持情况。


ie6、7的 hack 写法是?

  1. 首先所有的IE 10以下的浏览器browser(不含10)都支持HTML条件注释法,

  2. IE6能识别下划线" _ "和星号" * ",IE7能识别星号" * ",但不能识别下划线" _ ",IE6~IE10都认识"\9"。
    因此:
    比如关于color 的hack写法:
    .box{
    color: red;
    _color: blue; /* IE6中,color是正常识别的,但是_color也能识别,因为产生后者覆盖前者,IE6中颜色便是blue了。 /
    color: pink; /IE6、7都能识别, 所以如果继续添加这一行,那么IE 6中,会在此被pink覆盖,如果是在IE 7中,由于不能识别之前的_color, 所以第一次渲染成了color: red; 第二次被
    color: pink; 覆盖。 /
    color: yellow\9; /
    ie/edge 6-8*/
    }

  3. 另外就是使用条件注释法,在HTML写入:

  <!--[if IE 6]>
  <p>You are using Internet Explorer 6.</p>
  <![endif]-->

这代表如果是IE 6 浏览器,那么则有如上的p段落。


  <!–-[if IE 7]>
  <link rel="stylesheet" href="ie7.css" type="text/css" />
  <![endif]–->

这代表,如果是IE 7 浏览器,那么引入如上的css样式表。


5种以上的浏览器兼容写法

  1. 条件注释
<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->
  1. 属性前缀
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}
  1. 选择器前缀
span{ /仅ie6/
display: block;
}
  1. 使用Modernizr工具
<div class="no-textshadow"></div>
.no-textshadow{border:1px solid red;}
  1. 条件注释和兼容工具相结合
 <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->

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


常见属性的兼容情况

属性 兼容情况
inline-block: >=ie8
min-width/min-height >=ie8
:before,:after >=ie8
div:hover >=ie7
background-size >=ie9
圆角 >= ie9
阴影 >= ie9
动画/渐变 >= ie10

参考

caniuse.com 查CSS属性兼容
browserhacks 查 Hack 的写法

上一篇 下一篇

猜你喜欢

热点阅读