浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查询起来就方便多了。这篇文章就向大家分享 Browserhacks 帮我们从网络上收集的各个浏览器特定的 CSS & JavaScript Hack,记得推荐和分享啊!

IE 选择器 Hack

1 2 3 /* IE 6 and below */ * html .selector  {} .suckyie 6 .selector {}  /* .suckyie6 can be any unused class */
1 2 /* IE 7 and below */ .selector, {}
1 2 3 4 /* IE 7 */ *:first-child+html .selector {} .selector, x:-IE 7  {} *+html .selector {}
/* Everything but IE 6 */ html > body .selector {}
1 2 3 /* Everything but IE 6/7 */ html >  /**/  body .selector {} head ~  /* */  body .selector {}
1 2 3 4 5 /* Everything but IE 6/7/8 */ :root *> .selector {} body:last-child .selector {} body:nth-of-type( 1 ) .selector {} body:first-of-type .selector {}

IE 属性/值 Hack

1 2 3 /* IE 6 */ .selector {  _color blue ; } .selector { - color blue ; }
1 2 3 /* IE 6/7 - acts as an !important */ .selector {  color blue  !ie; } /* string after ! can be anything */
1 2 3 4 5 6 7 /* IE 6/7 - any combination of these characters:   ! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > | */ .selector { ! color blue ; } .selector { $ color blue ; } .selector { & color blue ; } .selector { * color blue ; } /* ... */
1 2 3 /* IE 8/9 */ .selector {  color blue \ 0 /; } /* must go at the END of all rules */
1 2 /* IE 9/10 */ .selector:nth-of-type( 1 n) {  color blue \ 9 ; }
1 2 3 /* IE 6/7/8/9/10 */ .selector {  color blue \ 9 ; } .selector { color /*\**/ blue \ 9 ; }
1 2 /* Everything but IE 6 */ .selector { color /**/ blue ; }

IE Media Query Hack

1 2 /* IE 6/7 */ @media  screen \ 9  {}
1 2 /* IE 8 */ @media \ 0 screen {}
1 2 /* IE 9/10, Firefox 3.5+, Opera */ @media  screen  and (min-resolution: + 72 dpi) {}
1 2 /* IE 10+ */ @media  screen  and (-ms-high-contrast: active), (-ms-high-contrast:  none ) {}
1 2 /* IE 6/7/8 */ @media \ 0 screen\, screen \ 9  {}
1 2 /* IE 8/9/10 & Opera */ @media  screen \ 0  {}
1 2 /* IE 9/10 */ @media  screen  and ( min-width : 0 \ 0 ) {}
1 2 /* Everything but IE 6/7/8 */ @media  screen  and ( min-width 400px ) {}

IE JavaScript Hack

1 2 3 /* IE 6 */ (checkIE = document.createElement( "b" )).innerHTML =  "<!--[if IE 6]><i></i><![endif]-->" ; var  isIE = checkIE.getElementsByTagName( "i" ).length == 1;
1 2 3 4 /* IE 7 */ (checkIE = document.createElement( "b" )).innerHTML =  "<!--[if IE 7]><i></i><![endif]-->" ; var  isIE = checkIE.getElementsByTagName( "i" ).length == 1; navigator.appVersion.indexOf( "MSIE 7." )!=-1
1 2 /* IE <= 8 */ var  isIE =  '\v' == 'v' ;
1 2 3 /* IE 8 */ (checkIE = document.createElement( "b" )).innerHTML =  "<!--[if IE 8]><i></i><![endif]-->" ; var  isIE = checkIE.getElementsByTagName( "i" ).length == 1;
1 2 3 /* IE 9 */ (checkIE = document.createElement( "b" )).innerHTML =  "<!--[if IE 9]><i></i><![endif]-->" ; var  isIE = checkIE.getElementsByTagName( "i" ).length == 1;
1 2 /* IE 10 */ var  isIE = eval( "/*@cc_on!@*/false" ) && document.documentMode === 10;
1 2 /* IE 10 */ var  isIE = document.body.style.msTouchAction != undefined;

Firefox 浏览器

  选择器 Hack

1 2 /* Firefox 1.5 */ body:empty .selector {}
1 2 /* Firefox 2+ */ .selector, x:-moz-any-link {}
1 2 /* Firefox 3+ */ .selector, x:-moz-any-link; x: default  {}
1 2 /* Firefox 3.5+ */ body:not(:-moz-handler-blocked) .selector {}

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  媒体查询 Hack

1 2 /* Firefox 3.5+, IE 9/10, Opera */ @media  screen  and (min-resolution: + 72 dpi) {}
1 2 /* Firefox 3.6+ */ @media  screen  and (-moz-images-in-menus: 0 ) {}
1 2 /* Firefox 4+ */ @media  screen  and (min--moz-device-pixel-ratio: 0 ) {}

 

  JavaScript Hack

1 2 /* Firefox */ var  isFF = !!navigator.userAgent.match(/firefox/i);
1 2 /* Firefox 2 - 13 */ var  isFF = Boolean(window.globalStorage);
1 2 /* Firefox 2/3 */ var  isFF = /a/[-1]== 'a' ;
1 2 /* Firefox 3 */ var  isFF = ( function  x(){})[-5]== 'x' ;

Chrome 浏览器

  选择器 Hack

1 2 /* Chrome 24- and Safari 5- */ ::made-up-pseudo-element, .selector {}

  

  媒体查询 Hack

1 2 /* Chrome, Safari 3+ */ @media  screen  and (-webkit-min-device-pixel-ratio: 0 ) {}

  

  JavaScript Hack

1 2 /* Chrome */ var  isChrome = Boolean(window.chrome);

  

Safari 浏览器

  选择器 Hack

1 2 3 /* Safari 2/3 */ html[xmlns*= "" ] body:last-child .selector {} html[xmlns*= "" ]:root .selector  {}
1 2 /* Safari 2/3.1, Opera 9.25 */ *|html[xmlns*= "" ] .selector {}
1 2 /* Safari 5- and Chrome 24- */ ::made-up-pseudo-element, .selector {}

  

  媒体查询 Hack

1 2 /* Safari 3+, Chrome */ @media  screen  and (-webkit-min-device-pixel-ratio: 0 ) {}

  

  JavaScript Hack

1 2 /* Safari */ var  isSafari = /a/.__proto__== '//' ;

  

Opera 浏览器

  选择器 Hack

1 2 /* Opera 9.25, Safari 2/3.1 */ *|html[xmlns*= "" ] .selector {}
1 2 /* Opera 9.27 and below, Safari 2 */ html:first-child .selector {}
1 2 /* Opera 9.5+ */ noindex:-o-prefocus, .selector {}

  

  媒体查询 Hack

1 2 /* Opera 7 */ @media  all  and ( min-width 0px ){}
1 2 /* Opera 12- */ @media  all  and (-webkit-min-device-pixel-ratio: 10000 ), not  all  and (-webkit-min-device-pixel-ratio: 0 ) {}
1 2 /* Opera, Firefox 3.5+, IE 9/10 */ @media  screen  and (min-resolution: + 72 dpi) {}
1 2 /* Opera, IE 8/9/10 */ @media  screen  {}

  

  JavaScript Hack

1 2 /* Opera 9.64- */ var  isOpera = /^ function  \(/.test([].sort);
1 2 /* Opera 12- */ var  isOpera = Boolean(window.opera);

  

 【收藏】史上最全的浏览器 CSS & JS Hack 手册 随笔

 

在线查询          在线测试

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄