虽然如今作前端已经基本不须要hack,可是必需要对它有一些基本的了解,一名好的前端要尽量不使用hack的状况下实现需求,作到较好的用户体验。可是有的时候咱们不得已仍是会用到这种方式,仍是作一些简单的了解,不得已要用的时候再去详细解决它。
什么是CSS hack
因为不一样厂商的流览器或某浏览器的不一样版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不同,致使在不一样浏览器的环境中呈现出不一致的页面展示效果。这时,咱们为了得到统一的页面效果,就须要针对不一样的浏览器或不一样版本写特定的CSS样式,咱们把这个针对不一样的浏览器/不一样版本写相应的CSS code的过程,叫作CSS hack!html
CSS hack的原理
因为不一样的浏览器和浏览器各版本对CSS的支持及解析结果不同,以及CSS优先级对浏览器展示效果的影响,咱们能够据此针对不一样的浏览器情景来应用不一样的CSS。前端
CSS hack分类
CSS Hack大体有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不一样版本之间的表现差别而引入的。浏览器
- 属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。
- 选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。
- IE条件注释法(即HTML条件注释Hack):针对全部IE(注:IE10+已经再也不支持条件注释): <!--[if IE]>IE浏览器显示的内容 <![endif]-->,针对IE6及如下版本: <!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->。这类Hack不只对CSS生效,对写在判断语句里面的全部代码都会生效。
若是有不对的地方还请你们多多指教。