美文网首页
关于浏览器兼容

关于浏览器兼容

作者: 来人啊都给朕退下吧 | 来源:发表于2017-06-03 16:08 被阅读16次

什么是 CSS hack

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

谈一谈浏览器兼容的思路

  1. 首先考虑需不需要做兼容。从产品的角度考虑产品的受众以及浏览器的比例,效果优先还是基本功能优先。
  2. 成本的考虑,投入产出比。
  3. 兼容哪些浏览器,兼容到什么版本,让哪些浏览器支持哪些效果。
  4. 渐进增强和优雅降级的选择

渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

浏览器兼容的写法

  1. 条件注释:

     <!-- [if lt IE9]>
     <style>
     header, footer, nav{display:block;}
     </style>
     <![endif]-->
    
  2. 属性前缀法:

           .box{
     color: red;
     _color: blue; /ie6/
     color: pink; /ie6,7/
     color: yellow\9; /ie/edge 6-10/
     }
    
  3. 选择器前缀法

     span{ /仅ie6/
     display: block;
     }
    
  4. 使用Moderniz( 利用Modernizr的能力检测,对标签不存在的能力特别优化)

    <div class="no-textshadow"></div>
    .no-textshadow{border:1px solid red;}
  1. 条件注释和兼容工具相结合

     <!--[if lte IE9]>
     <script src="../js/html5shiv.js"></script>
     <![endif]-->
    

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

条件注释

这是基于HTML源码中被IE(IE<=9)有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。

IE Hack
针对IE浏览器编写不同的CSS(属性前缀法、选择器前缀法、IE条件注释法)使得页面效果在不同版本的IE浏览器中达到效果一致。

js 能力检测
使用JS来检测浏览器拥有的能力而不是来区分是什么浏览器。这样如果浏览器拥有某种能力则提供一种方案,没有某种能力则提供另一种方案。

html5shiv.js

针对不支持HTML5标签的浏览器,创建并模拟HTML5的标签的效果并使相应的CSS生效。
respond.js

为不支持CSS3媒体查询的浏览器(IE6-8)模拟CSS3的媒体查询。
css reset

清除浏览器默认的元素样式。
normalize.css

保护有用的浏览器默认样式;一般化的样式,修复浏览器自身的bug并保证各浏览器的一致性;优化CSS可用性。
Modernizr

是一个JS类库,用来检测浏览器的CSS3和HTML5能力,从而解决浏览器的兼容问题。

postCSS

利用JS插件转换CSS。可以将CSS解析成抽象语法树。

查询属性兼容性网站

canIuse

相关文章

网友评论

      本文标题:关于浏览器兼容

      本文链接:https://www.haomeiwen.com/subject/czcmfxtx.html