1CSS hack是啥?
hack的中文意思是:(动词)乱劈、乱砍、开垦。所以最开始听到这个术语的时候,我真的不明白它的含义。
学习完课程后,我发现CSS hack其实并不深奥,一言以蔽之:就是针对不同浏览器或者浏览器的不同版本书写相应的CSS code,这个行为就叫做:CSS hack。
2. 为啥需要CSS hack?
因为浏览器有很多,而且在一定时期内,一个浏览器往往存在着多重版本,所以浏览器市场上的用户分布广泛。既然存在着不同的本体和分身,它们对于CSS的支持和解析必然不尽相同,因此一份网页在不同浏览器环境中往往呈现出不一致的页面展现效果。如果希望获得统一的页面效果,就应该要针对不同的浏览器或浏览器的不同版本书写特定的CSS样式。
3. CSS hack分类
大致有三种类型:CSS属性前缀法、选择器前缀法、IE条件注释法。我觉得,CSS hack大约是因为IE的多版本存在且有固定的用户群体,所以一直发挥着比较重要的作用。
- 属性前缀法:IE6可以识别下划线
_
和星号*
,IE7能识别星号*
,但是不能识别下划线,IE6到IE10都认识\9
,但是对于火狐浏览器而言,这些下划线、星号、反斜杠9它都不认识,因此通过对类添加这些前缀就可以在不同浏览器或者浏览器的不同版本中实现相应的效果 - 选择器前缀法:IE6可以识别
*html .class{}
,IE7可以识别*+html .class{}
- IE条件注释法:首先需要注意:(敲黑板)IE10以上的浏览器已经不再支持条件注释。因为IE条件注释hack可以面对IE10以前的浏览器来处理兼容问题。大致形式为
<!--[if IE]>
内容
<![endif]-->
4. hack分类细述
- 条件注释法
这是IE浏览器专门独占的hack方式
比如
只在IE6下生效
<!--[if IE6]>
在IE6中显示的文字
<![endif]-->
在IE6及以上版本生效
<!--[if gte IE6]>
在IE6及其以上版本浏览器中显示的文字
<![endif]-->
类似的还有: