前端面试题-CSS Hack

一、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青色YYYYNYNYNY
++color绿色YYYYNYNYNY
-color黄色YYNNNNNNNN
__color蓝色YYNYNYNYNN
##color紫色YYYYNYNYNY
0color:red0赤色NNNNYNYNYN
90color:red90粉色NNNNNNYNYN
!importantcolor:blue !important;color:green;棕色NNYNYNYNYY

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。

《前端面试题-CSS Hack》

浏览更多

    原文作者:WEBING
    原文地址: https://segmentfault.com/a/1190000013954044
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞