css hack是通过在css样式中加入一些特殊的符号,让不同的浏览器识别不同的符号
(什么样的浏览器识别什么样的符号是有标准的,css hack就是让你记住这个标准),以达到应用不同的css样式的目的,
比如.kwstu{width:300px;_width:200px;}
一般浏览器会先给元素使用width:300px;的样式,紧接着后面还有个_width:200px;
由于下划线_width只有ie6可以识别,所以此样式在ie6中实际设置对象的宽度为200px,后面的把前面的给覆盖了,
而其他浏览器不识别_width不会执行_width:200px;这句样式,所以在其他浏览器中设置对象的宽度就是300px;
2.css hack解决问题
css hack用来解决有些css属性在不同浏览器中显示的效果不一样的问题,如margin属性在ie6中显示的距离会比其他浏览器中显示的距离宽2倍,也就是说margin-left:20px;在ie6中距左侧对象的实际显示距离是40px,而在非ie6中显示的距左侧对象的距离是设置的值20px;所以要想设置一个对象距离左侧对象的距离在所有浏览器中都显示是20px的宽度的样式应为:.kwstu{margin-left:20px;_margin-left:20px;}。
3、浏览器识别字符标准对应表
从上图可以分析出以下几种情况:
1.大部分特殊字符ie浏览器支持,其他主流浏览器firefox,chrome,opera,safari不支持 (opera可识别除外)。2.\9 :所有ie浏览器都支持3._和- :仅ie6支持4.* :ie6、e7支持5.\0 :ie8、ie9支持,opera部分支持6.\9\0 :ie8部分支持、ie9支持7.\0\9 :ie8、ie9支持
所以我们可以把顺序写成这样:(这也是兼容各大主流游览器的汇总)
.element{
color:#000; /*w3c标准*/
[;color:#f00;]; /*webkit(chrome和safari)*/
color:#666\9; /*ie8*/
*color:#999; /*ie7*/
_color:#333; /*ie6*/
}
:root .element{color:#0f0\9;} /*ie9*/
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (
-webkit-min-device-pixel-ratio:0) {
.element{color:#336699;}
} /*opera*/
@-moz-document url-prefix(){
.element{color:#f1f1f1;}
} /*firefox*/
(1)清除浮动
在firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的hack来对父级做一次定义,那么就可以解决这个问题。
select:after {content:”.”;display:block;height:0;clear:both;visibility:hidden;}
