天天看點

浏覽器CSS相容總結

首先推薦一款內建多個版本IE(IE5.5、IE6、IE7、IE8)的樣式測試工具(IETester):

http://www.my-debugbar.com/wiki/IETester/HomePage

以下是上個月總結的樣式相容方面的技巧,現釋出到部落格。

1.        使用DIV+CSS布局注意事項:

使用DIV+CSS布局,要配合一定的table布局才能較好的達到多浏覽器相容。

完全使用DIV+CSS布局實作多浏覽器的相容,難度較大;

在對樣式不熟悉且項目需求中沒有要求一定要用DIV+CSS布局的情況下,建議直接使用table布局,這樣更容易實作多浏覽器相容;

2.        IE不同版本之間的相容,IE與火狐的相容:

可以使用如下形式(以IE6為例),為特定版本的IE使用特定的樣式達到IE不同版本間的樣式相容

    <!--[if lte IE 6]>

<link href="../../Content/DropdownMenuIE6.css" target="_blank" rel="external nofollow" rel="Stylesheet" type="text/css" />

<![endif]-->

這裡的<!--[if lte IE 6]>和<![endif]-->之間除了可以使用link标簽引用樣式外,還可以用style标簽聲明特定的樣式。

像_width,_height等在樣式屬性名前加“_”隻有IE6才能識别。

在樣式屬性值之後接“!important”(必須寫在未加!important的同名屬性前),IE6會忽略,IE7、IE8及FF能識别。

在樣式屬性前加“*”則隻有IE能夠識别。

例如:

差別FF,IE7,IE6:

       background:orange;*background:green !important;*background:blue;

IE6 IE7 FF
* ×
!important ×

#someNode

{

    position: fixed;

   #position: fixed;

   _position: fixed;

}

#example { color: #333; }

* html #example { color: #666; }

*+html #example { color: #999; }

注意:

*+html 對IE7的HACK 必須保證HTML頂部有如下聲明:

 以下為引用的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

可以使用以下HTML:

<meta http-equiv="x-ua-compatible" content="ie=7" />

讓IE8使用相容IE7的樣式模式。

當由于使用margin 、padding導緻的IE與FF顯示的寬度有差異時,除了可以嘗試使用上文提及的方法處理外,還可以使用腳本在相應的部分添加樣式,例如:

<script language="javascript" src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>

<script type="text/javascript" language="javascript" >

//火狐浏覽器樣式

$(document).ready(function(){

    var bro=$.browser;

    if(bro.mozilla) {

       $("#aboutMenu").attr("style","padding:0 33px 0 23px;");

       $("#headTaleFF").attr("style","width:951px;");

    }  

})

</script>

上面的代碼是使用jquery判斷目前的浏覽器是否是火狐,當是火狐浏覽器時,添加相應的樣式(覆寫之前産生差異的樣式),使得火狐中的顯示寬度與IE保持一緻。

3. 補充一些項目中的樣式問題:

用hr标簽顯示一條橫線時,在FF中的顔色始終是深黑色(即使寫了顔色樣式)。

這時可以考慮用DIV實作顯示橫線,但如果樣式中不加overflow: hidden;則在IE6中橫線的高度會有20像素左右,而不是1像素。正确的寫法如下:

<div style="background-color: #b2b5b6; width: 179px; height: 1px; overflow: hidden;" />

在使用li标簽時(例如在導覽列中),因為li标簽的内容前會有清單符号,是以會空出一部分,如果要消除這部分空餘,在li标簽的樣式裡添加 padding: 0px;margin-left: 0px;list-style-type: none;既可。

4.針對webkit的hacks:

    @media screen and (-webkit-min-device-pixel-ratio:0) {

    }

這樣的hacks同樣是被Google Chrome、Safari 3.0、Opera 9 所識别的。“另有一種通過附加#的Css hack對chrome無效,可能是Webkit版本不同。”

将chrome的字型設定為宋體,其它浏覽器仍然使用預設設定的字型:

    @media screen and (-webkit-min-device-pixel-ratio:0) {

    .parent-cat li{font-family:'宋體'}

    .parent-cat li{font-family:inhert;#}

    }

在設定完針對google chrome的樣式後,再通過css inhert + # hacks即可達目标。

(針對webkit的hacks來源:http://www.ajaxbbs.net/post/google-chrome-only-css-hacks.html)