饥人谷技术博客

浏览器兼容

2017-03-04  本文已影响0人  mianmiani

什么是 CSS hack

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

  1. CSS属性前缀法
  2. 选择器前缀法
  3. IE条件注释法

谈一谈浏览器兼容的思路

  1. 产品角度考虑:考虑产品的受众、受众使用的浏览器比例、页面效果优先还是基本功能优先。
  2. 成本角度:是否有必要为了追求网页效果而花费资源;还是保持页面基本功能、节约成本。
  3. 项目、产品需求角度:需要兼容哪些浏览器;或是兼容到哪些浏览器的哪部分版本;需要让浏览器实现哪些功能。
  4. 从产品的市场定位或功能定位角度出发:是选择渐进增强:先保证基本功能,再根据需求及资源完善页面效果;还是选择优雅降级:先构建网页的整体功能效果,再往下满足低版本浏览器的兼容性。
  5. 根据兼容性需求选择合适的框架:
    合适的框架:
    Bootstrap:>=IE8
    jQuery1.~ :>=IE6,jQuery 2.~ >=IE9
    vue >=ie9
  6. 根据需求选择合理的兼容性开发工具:html5shiv.js、respond.js、css reset、normalize.css、Modernizr、postCSS

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

  1. IE条件注释法
!   [if !IE]             非IE
lt  [if lt IE 5.5]     小于IE 5.5
lte   [if lte IE 6]      小于等于IE6
gt  [if gt IE 5]         大于 IE5
gte   [if gte IE 7]     大于等于IE7
|    [if (IE 6)|(IE 7)]   IE6或者IE7
  1. 选择器前置法
_body{}    
*body{}       /*IE6能识别下划线和*号其他浏览器都不能,IE7能识别下划线。
body/9{}      /*IE6-IE10都能识别/9,而firefox对这几个标号都不能识别。
  1. CSS属性前缀法
.box{
          color: red;
          _color: blue;              /*ie6能识别*/
          *color: pink;              /*ie67都能识别*/
          color: yellow\9;           /*ie/edge 6-8都能识别*/
    }
.clearfix{
              content:'';
              display:block;
              clear:both;
}
.clearbox{
              *zoom:1;         /*仅对IE6 7 有效,出发了haslayout*/    
  1. Modernizr工具
    运行的时候它会在html元素上添加一批CSS的class名称,这些class名称标记当前浏览器支持哪些特性和不支持哪些特性,支持的特性就直接显示该天特性的名称作为一个class(例:canvas,websockets),不支持的特性显示的class是“no-特性名称”。
  2. 条件注释与类选择器结合
<!DOCTYPE html>
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->

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

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

http://caniuse.com/

上一篇 下一篇

猜你喜欢

热点阅读