170424-css-css hack

各种版本浏览器之间对css进行解释之后,网页内容会产生误差,和js一样,一个效果在各个版本浏览器中显示不同,甚至失效。采取的不同css样式来解决这些问题就叫做 CSS hack。

css hack大致可以分为三种表现形式

1. css属性前缀法

\9:所有IE浏览器都支持

_和-:仅IE6支持

*:IE6、E7支持

\0:IE8、IE9支持,opera部分支持

\9\0:IE8部分支持、IE9支持

\0\9:IE8、IE9支持


Demo1

.hack{

/*demo1 注意顺序,否则IE6/7下可能无法正确显示,导致结果显示为白色背景*/

background-color:red;/* All browsers */

background-color:blue!important;/* All browsers but IE6 */

*background-color:black;/* IE6, IE7 */

+background-color:yellow;/* IE6, IE7*/

background-color:gray\9;/* IE6, IE7, IE8, IE9, IE10 */

background-color:purple\0;/* IE8, IE9, IE10 */

background-color:orange\9\0;/*IE9, IE10*/

_background-color:green;/* Only works in IE6 */

*+background-color:pink;/*  WARNING: Only works in IE7 ???*/

}

Demo2


.iehack{

background-color:orange;/* all - for Firefox/Chrome */

background-color:red\0;/* ie 8/9/10/Opera - for ie8/ie10/Opera */

background-color:blue\9\0;/* ie 9/10 - for ie9/10 */

*background-color:black;/* ie 6/7 - for ie7 */

_background-color:green;/* ie 6 - for ie6 */

}



2. 选择器前缀法

选择器前缀法,例如IE6能识别*html .class{},IE7能识别*+html .class{}

??为什么和css属性前缀 不一致

@media screen\9{...}只对IE6/7生效

@media \0screen {body { background: red; }}只对IE8有效

@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效

@media screen\0 {body { background: green; }} 只对IE8/9/10有效

@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效

3. IE条件注释法

对所有判断语句内的代码生效(不仅只有css)

针对所有ie(ie10+已经不再支持)

<!--[if IE]>ie浏览器显示内容<![endif]-->

<!--[if lt IE 6]>ie6以下显示的内容<![endif]-->

<!--[if gte IE 6]>这段文字只在IE6以上(包括)版本IE浏览器显示<![endif]-->

这段文字只在IE6以上(包括)版本IE浏览器显示这段文字只在IE6以上(包括)版本IE浏览器显示<!--[if IE 6]>在IE6浏览器显示<![endif]-->

<!--[if ! IE 8]>在非IE8浏览器显示<![endif]-->

<!--[if !IE]>在非ie浏览器<![endif]-->

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容