hack与hasLayout的区别
- hack是针对IE不同版本的兼容方法
- hasLayout是针对IE浏览器特头的属性,为了兼容IE与不同浏览器之间的样式
方法hack
- CSS hack是一种特殊的代码,这段代码只在某些浏览器中可以识别,而其他浏览器不能识别,通过这种方式,来为一些浏览器设置特殊的代码
- 条件hack值对IE浏览器有效,其他的浏览器都会将它识别为注释,IE10及以上的浏览器已经不支持这种方式
- css的hack
<!--[if IE 8]>
<p>只有通过IE8浏览器打开该页面的时候才引用此css文件</p>
<link rel="stylesheet" type="text/css" href="style.css"/>
<![endif]-->
- js的hack
<!--[if IE 8]>
<p>只有通过IE8浏览器打开该页面的时候才引用此css文件</p>
<script type="text/javascript" src="main.js"></script>
<![endif]-->
hack版本关键字
- lte:小于等于
- lt:小于
- gte:大于等于
- gt:大于
- !:不等于
仅对大于IE6版本的有效
<!--[if gt IE 6]><link href="" type="text/css" rel="stylesheet" > <![endif]-->
属性hack
- 位置:可以添加在css样式或者选择器前面,使用最多的是_和*,实在万不得已要用再用这个,因为这个给不同浏览器设置不同的样式,改的时候比较麻烦,容易遗漏。
- 在样式前面加下划线,则只有IE6及以下浏览器才可以识别
.box{
_color:red
}
// 在样式前面加*,则只有IE7及以下的浏览器才可以识别
.box{
*color:red
}
// 在样式前面加 * html,则只有IE6浏览器才可以识别
* html .box{
color:red
}