浏览器兼容

什么是 CSS hack

由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。

这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能在不同的浏览器中也能得到我们想要的页面效果。

谈一谈浏览器兼容的思路

  • 要不要做:
    产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
    成本的角度 (有无必要做某件事)

  • 做到什么程度:
    让哪些浏览器支持哪些效果

  • 如何做:
    根据兼容需求选择技术框架/库(jquery)
    根据兼容需求选择兼容工具(html5shiv.jsrespond.jscss resetnormalize.cssModernizrpostCSS)
    条件注释、CSS Hack、js 能力检测做一些修补

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

  • 注释法
    <!--[if IE 6]>
    <p>You are using Internet Explorer 6.</p>
    <![endif]-->
  • IE Hack法
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}
  • 兼容清除浮动
.clearfix{
    content: " ";
        display: block;
        clear: both;
}
.clearfix{
    *zoom: 1; //for ie6,7
}
  • ie 67的inline-block
.target{
  display: inline-block;
  *display: inline;
  *zoom: 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]-->

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

  1. 条件注释
    <!--[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]-->
项目 范例 说明
[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

指于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码。

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

针对ie的css hack

  1. js 能力检测
    检测是否有这个属性,方法没有就用另外一种方式获取这个
    通常直接用jquery来达到这个目的。
  2. html5shiv.js
    让一些自身不支持html5标签的浏览器支持html5。具体方式是使用createElement()来创建标签。
  3. respond.js
    为了响应式的页面,为ie6/7/8模拟css3的媒体查询。
  4. css reset
    为浏览器自身有默认的样式,如padding和margin等, 不方便我们使用,所以我们要重置这些属性,如将margin设为0,字体设置为xx等等。暴力清除。
  5. normalize.css
    上面一个的进化版本,保护了有用的浏览器默认样式。
  6. Modernizr
    探测用户浏览器html5和css3的一些特性,根据用户浏览器是否支持这些特性来向html元素中添加不同的class。
  7. postCSS
    PostCSS 是一个允许使用 JS 插件转换样式的工具。 这些插件可以检查(lint)你的 CSS,支持 CSS Variables 和 Mixins, 编译尚未被浏览器广泛支持的先进的 CSS 语法,内联图片,以及其它很多优秀的功能。PostCSS的目标是通过自定义插件和工具这样的生态系统来改造CSS。与Sass和Less这些预编译器相同的原则,PostCSS把扩展的语法和特性转换成现代的浏览器友好的CSS。

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

Can I use

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 CSS hack CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什...
    怎么昵称阅读 407评论 0 1
  • 什么是 CSS hack 引自百度百科的定义: CSS hack由于不同厂商的浏览器,比如Internet Exp...
    肥鱼666阅读 159评论 0 0
  • 1.什么是 CSS hack CSS hack由于不同厂商的浏览器,比如Internet Explorer,Saf...
    Ghj_小树阅读 440评论 2 5
  • 1.什么是 CSS hack 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozi...
    zhaonu阅读 407评论 0 0
  • 1、什么是 CSS hack 不同厂商的浏览器(比如Internet Explorer,Safari,Mozill...
    zh_yang阅读 376评论 0 0