首页 > 代码库 > Css Hack

Css Hack

1.什么是CSS hack
      由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!

2.CSS hack的原理
   由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。

3.CSS hack分类
   CSS Hack大致有3种表现形式:

  1. CSS属性前缀法(即类内部Hack):例如 IE6能识别下划线""和星号" ",IE7能识别星号" ",但不能识别下划线"",IE6~IE10都认识"\9",但firefox前述三个都不能认识。
  2. 选择器前缀法(即选择器Hack):例如 IE6能识别html .class{},IE7能识别+html .class{}或者*:first-child+html .class{}。
  3. 以及IE条件注释法(即HTML条件注释Hack):这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
    实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。

CSS hack书写顺序,一般是将适用范围广、被识别能力强的CSS定义在前面。

1、<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
这行代码是永远以最新的IE版本模式来显示网页,使IE支持HTML5。
2、<meta name="renderer" content="webkit">
这行代码是360浏览器渲染页面需默认用极速内核
3、只在IE下生效
<!--[if IE]> 这段文字只在IE浏览器显示 <![endif]-->

只在IE6下生效
<!--[if IE 6]> 这段文字只在IE6浏览器显示 <![endif]-->

只在IE6以上版本生效
<!--[if gte IE 6]> 这段文字只在IE6以上(包括)版本IE浏览器显示 <![endif]-->

只在IE8上不生效
<!--[if ! IE 8]> 这段文字在非IE8浏览器显示 <![endif]-->

非IE浏览器生效
<!--[if !IE]> 这段文字只在非IE浏览器显示 <![endif]-->

只在IE9以下版本生效
<!--[if lt IE 9]> <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"> <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"> <![endif]-->

详细资源:http://www.jb51.net/css/493362.html

Css Hack