浏览器的兼容性一直是个头疼的问题,使用“欺骗”技术可以使各个浏览器效果一致,花了些时间整理了各个浏览器的HACK,主要包括IE系列和最新版本的Chrome、Safari、Firefox、 Opera,比较全面的记录下Hack,内容包括3部分:媒体查询 hack、属性Hack、选择器Hack,这些Hack已经测试并获得有效运用,有须要的同窗能够放心使用,笔者会在之后不断的更新,若是有须要补充或者修改的,欢迎你们指教!css
如下代码之间的空格是必要的,缺乏空格致使失效html
/*---------------------------------媒体查询hack [[---------------------------------*/web
/* 只支持IE六、7 */浏览器
@media screen\9 {...}测试
/* 只支持IE8 */url
@media \0screen {...}spa
/* 只支持IE六、七、8 */code
@media \0screen\,screen\9 {...}htm
/* 只支持IE八、九、10 */blog
@media screen\0 {...}
/* 只支持IE九、10 */
@media screen and (min-width:0\0) {...}
/* 只支持IE10 */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {...}
/* 支持IE九、Chrome、Safari、Firefox、 Opera */
@media all and (min-width:0){...}
/* 只支持wekit内核浏览器Chrome、Safari */
@media screen and (-webkit-min-device-pixel-ratio: 0) {...}
/* 只支持Opera */
@media all and (-webkit-min-device-pixel-ratio: 10000), not all and (-webkit-min-device-pixel-ratio: 0) {...}
/* 只支持Firefox */
@-moz-document url-prefix() {...}
如:
<p class="class">@hack@hack@hack@hack@hack@hack</p> <style type="text/css"> @media all and (min-width:0){ /* 在IE9文本颜色为红色*/ .class{color:#F00;} } @media screen and (-webkit-min-device-pixel-ratio: 0) { /* 在Chrome、Safari中文本颜色为绿色 */ .class{color:#0F0;} } @media all and (-webkit-min-device-pixel-ratio: 10000), not all and (-webkit-min-device-pixel-ratio: 0) { /* 在Opera中文本颜色为蓝色 */ .class{color:#00F;} } @-moz-document url-prefix() { /* 在Firefox中文本颜色为品红色 */ .class{color:#F0F;} } </style>
/*---------------------------------媒体查询hack ]]---------------------------------*/
/*---------------------------------选择器hack [[---------------------------------*/
/* 只支持IE7 */
html* 选择器{}
/* 仅支持IE7 使用该选择器须要HTML顶部有声明:<!DOCTYPE HTML ......>*/
*+html 选择器{}
/* 只支持IE6 */
*html 选择器{}
如:
<p class="class">选择器hack选择器hack选择器hack选择器hack选择器hack选择器hack</p> html* .class{color:#F00;} /* 在IE7中文本颜色为红色 */ *+html .class{color:#0F0;} /* 在IE7中文本颜色为绿色 */ *html .class{color:#00F;} /* 在IE6中文本颜色为蓝色 */
/*---------------------------------选择器 hack ]]---------------------------------*/
/*---------------------------------属性hack [[---------------------------------*/
/* 只支持IE六、七、八、九、10 */
选择器{属性:属性值\9;}
/* 只支持IE八、九、10 */
选择器{属性:属性值\0;}
/* 支持IE8的部分属性值、彻底支持IE九、10 */
选择器{属性:属性值\9\0;}
/* 仅支持IE7和IE6 */
选择器{*属性:属性值;}
/* 只支持IE6 */
选择器{_属性:属性值;}
/* 只不支持IE6 */
选择器{属性:属性值!important;}
/* 仅支持Safari和Chrome ,且只能放在选择器的最后一个属性,由于当浏览器解析[;;]后,不会再读取后面属性 */
选择器{[;属性:属性值;]}
如:
<p class="class">属性hack属性hack属性hack属性hack属性hack属性hack</p> <style type="text/css"> .class{ color:#F00\0;/* 在IE8和IE9中文本颜色为红色 */ *color:#0F0; /* 在IE7中文本颜色为绿色 */ _color:#00F; /* IE6中颜色为蓝色 */ [;color:#F0F;]/* 在Safari和Chrome中颜色为品红色 */ } </style>
/*---------------------------------属性hack ]]---------------------------------*/
建议是:尽可能写出无hack的结构和样式,作到能够向后兼容,减小多余代码,更加能够体现本身专业化的态度。
本文来源于https://www.cnblogs.com/PeunZhang/p/4089894.html#rgba_bug