1. 程式人生 > >瀏覽器的兼容性(CSS瀏覽器兼容性、CSS hack)

瀏覽器的兼容性(CSS瀏覽器兼容性、CSS hack)

zoom content 兼容性 line border orm only box 瀏覽器兼容

一、關於CSS hack(盡量不用或者少用,減少頁面復雜度)

  1、條件註釋法:(我的測試是IE9及其以下才有效)

  這種方式是IE瀏覽器專有的Hack方式,微軟官方推薦使用的hack方式。舉例如下

只在IE下生效
<!--[if IE]>這段內容只在IE瀏覽器中顯示<![endif]-->

只在IE6下生效
<!--[if IE 6]> 這段文字只在IE6瀏覽器中顯示 <![endif]-->

只在IE6及其以上瀏覽器中生效
<!--[if gte IE 6]> 這段文字只在IE6及其以上的IE瀏覽器中顯示 <![endif]-->

只有在非IE8得IE瀏覽器下中生效
<!--[if ! IE 8]> 這段文字只在非IE8的IE瀏覽器中顯示 <![endif]-->

下面這條,在谷歌瀏覽器中測試無效(沒有裝其他更多瀏覽器,電腦太垃圾了),可能有錯誤:
    
只有在非IE瀏覽器中顯示:
<!--[if !IE]> 這段文字在非IE瀏覽器中顯示 <![endif]-->

  2、類內屬性前綴法(S:標準模式;Q:怪異模式)

技術分享圖片

在標準模式中:
“-”和“_”   IE6專有的hack
“*”和“+”   IE6/IE7都生效
“\9”     IE6/IE7/IE8/IE9/IE10都生效
“\0”     IE8/IE9/IE10都生效,是IE8/IE9/IE10的hack
“\9\0”     只對IE9/IE10生效,是IE9/IE10的hack
!important  只有IE6瀏覽器不生效

.hack{
  background-color: red;           /* All browser */
  background-color: blue !important;    /* All browser but IE6 and IE5 */
  *background-color: black;          /* IE5, IE6, IE7 */
  +background-color: yellow;         /* IE5, IE6, IE7 */
  *+background-color: pink;          /* IE5, IE6, IE7 */
  background-color: gray\9;          /* IE5, IE6, IE7, IE8, IE9, IE10 */
  background-color: purple\0;         /* IE8, IE9, IE10 */
  background-color: orange\9\0;        /* IE9, IE10 */
  -background-color: green;          /* only work in IE5, IE6 */
  _background-color: green;           /* only work in IE6,IE5 */
}

  3、選擇器前綴法

技術分享圖片

常見的:
*html *前綴只對IE6生效
*+html *+前綴只對IE7生效
@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有效

二、一些CSS的兼容性

常見的:
min-height/min-width    >=IE7
inline-block         >=IE8
:before/:after        >=IE8
::before/::after       >=IE9
div:hover           >=IE7
background-size        >=IE9
border-radius         >=IE9
box-shadow、flex       >=IE9
animation/transform     >=IE9
等等CSS3屬性必須是>=IE9的IE瀏覽器才支持


清浮動:(::afterIE8無法識別)
.clearfix:after{
  content: ".";
  display: block;
  height: 0;
  visibility: hidden;
  clear: both;
}
.clearfix{
  zoom: 1; /* 兼容 <=IE7 */
}

瀏覽器的兼容性(CSS瀏覽器兼容性、CSS hack)