一、CSS Hack的观点
因为差别厂商的流览器或某浏览器的差别版本(如IE,Firefox/Safari/Opera/Chrome等),对CSS的支撑、剖析不一样,致使在差别浏览器的环境中呈现出不一致的页面展示效果。这时候,我们为了取得一致的页面效果,就须要
针对差别的浏览器或差别版本写特定的CSS款式。我们把针对差别的浏览器/差别版本写响应的CSS code的历程,叫做CSS hack!
二、CSS Hack的道理
因为差别的浏览器和浏览器各版本对CSS的支撑及剖析效果不一样,以及CSS优先级对浏览器展示效果的影响,我们能够据此针对差别的浏览器情形来运用差别的CSS。
三、CSS Hack的分类
3.1 CSS 属性前缀法(即类内部 Hack)
(1)IE6 能辨认下划线” _
“和星号” *
“
(2)IE7 能辨认星号” *
“,但不能辨认下划线” _
“
(3)IE6~IE10 都辨认” \9
“
(4)firefox 前述三个都不能辨认。
3.2 选择器前缀法(即选择器 Hack)
(1)IE6 能辨认 *html .class{}
(2)IE7 能辨认 *+html .class{}
或 *:first-child+html .class{}
3.3 IE前提解释法(即 HTML 头部援用 if IE Hack)
(1)一切 IE (注:IE10+ 已不再支撑前提解释)能辨认 <!--[if IE]>IE浏览器显现的内容 <![endif]-->
(2)IE6及以下版天性辨认 <!--[if lt IE 6]>只在IE6-显现的内容 <![endif]-->
这类 Hack 不仅对 CSS 见效,对写在推断语句内里的一切代码都邑见效。
(3)现实项目中 CSS Hack 大部分是针对 IE 浏览器差别版本之间的表现差别而引入的。
四、CSS Hack誊写递次
平常是将适用范围广、被辨认能力强的 CSS 定义在前面。
五、CSS Hack IE前提解释法
这类体式格局是 IE 浏览器专有的 Hack 体式格局,微软官方引荐运用的 hack 体式格局。
5.1 只在 IE 见效
<!--[if IE]>
这段笔墨只在 IE 浏览器显现
<![endif]-->
5.2 只在 IE6 见效
<!--[if IE 6]>
这段笔墨只在 IE6 浏览器显现
<![endif]-->
5.3 只在 IE6+ 见效
<!--[if gte IE 6]>
这段笔墨只在 IE6以上(包含) 浏览器显现
<![endif]-->
5.4 只在 IE8 不见效
<!--[if ! IE 8]>
这段笔墨只在 非IE8 浏览器显现
<![endif]-->
5.5 非 IE 浏览器见效
<!--[if ! IE]>
这段笔墨只在 非IE 浏览器显现
<![endif]-->
六、CSS Hack 类内部属性前缀法
属性前缀法是在 CSS 款式属性名前加上一些只要特定浏览器才辨认的 hack 前缀,以到达预期的页面展示效果。
6.1 IE浏览器各版本 CSS hack 对照表
hack | 写法 | 实例 | IE6(S) | IE6(Q) | IE7(S) | IE7(Q) | IE8(S) | IE8(Q) | IE9(S) | IE9(Q) | IE10(S) | IE10(Q) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
* | *color | 青色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
+ | +color | 绿色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
– | -color | 黄色 | Y | Y | N | N | N | N | N | N | N | N |
_ | _color | 蓝色 | Y | Y | N | Y | N | Y | N | Y | N | N |
# | #color | 紫色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
0 | color:red0 | 赤色 | N | N | N | N | Y | N | Y | N | Y | N |
90 | color:red90 | 粉色 | N | N | N | N | N | N | Y | N | Y | N |
!important | color:blue !important;color:green; | 棕色 | N | N | Y | N | Y | N | Y | N | Y | Y |
6.2 IE浏览器规范形式
(1)“ -
″IE6 见效,专有的 hack
(2)“ \9
″ IE6 / IE7 / IE8 / IE9 / IE10 都见效
(3)“ \0
″ IE8 / IE9 / IE10 都见效
(4)“ \9\0
″ IE9 / IE10 见效
七、CSS Hack 选择器前缀法
选择器前缀法是针对页面表现不一致或许须要特别看待的浏览器,在 CSS 选择器前加上只要某些特定浏览器才辨认的前缀举行 hack。