天天看點

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

我們針對不同的浏覽器開發出不同的CSS檔案,一個針對IE,一個針對Firefox,一個針對其它所有類型的浏覽。這樣,我們在設計時,就不用去考慮太多,隻要我這個CSS能在FF中正常顯示,我就不管IE下執行下怎麼樣了,同樣IE中正常的CSS,也不去管它在FF中會是顯示如何的亂。

    首先,我們在HTML代碼裡要放入<link></link>标簽,标簽裡先寫入預設要用到的CSS檔案的位置,建議放IE中用到的CSS檔案,比如<link href="../css/ie.css" rel="stylesheet" type="text/css">,這樣能避免在對方浏覽器沒有開啟javascript的時候,無法判斷浏覽器類型的時候,也能以90%以上人使用的IE正常顯示。

把下面這段JS放在HEAD中

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

<SCRIPT LANGUAGE="JavaScript">

<!--

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

if (window.navigator.userAgent.indexOf("MSIE")>=1)

{

//如果浏覽器為IE,調用../css/ie.css

setActiveStyleSheet("ie.css");

}else{

if (window.navigator.userAgent.indexOf("Firefox")>=1)

//如果浏覽器為Firefox,調用../css/firefox.css

setActiveStyleSheet("firefox.css");

//如果浏覽器為其他,調用../css/other.css

setActiveStyleSheet("other.css");

}

function setActiveStyleSheet(title){ 

        document.getElementsByTagName("link")[0].href="../css/"+title;

//document.getElementsByTagName("link")[0].href="/blog/css/"+title; 這一行中的0是指第一個名為<link>的标簽,改為1,則表示第二個名為<link>的标簽。href=“”裡面就是放置CSS檔案的路徑,而title就是CSS檔案的檔案名

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

//-->

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

</SCRIPT>

CSS對IE7,IE6,FireFox和其它不同浏覽器的控制(轉)

window.navigator.userAgent.indexOf後面是浏覽器的類型,如果是Opera的話,還可以加一條if來判斷,用javascript 的條件判斷去寫吧,我這裡不多說了。

放好你的CSS的位置,試一下看看,是不是不同的浏覽器分别調用了不同的CSS檔案啊。爽!

第二種方法:

由于不同的浏覽器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,對CSS的解析認識不一樣,是以會導緻生成的頁面效果不一樣,得不到我們所需要的頁面效果。

這個時候我們就需要針對不同的浏覽器去寫不同的CSS,讓它能夠同時相容不同的浏覽器,能在不同的浏覽器中也能得到我們想要的頁面效果。

  解決的辦法

由于不同的浏覽器對CSS的支援及解析結果不一樣,還由于CSS中的優先級的關系。我們就可以根據這個來針對不同的浏覽器來寫不同的CSS。

比如IE6能識别下劃線_和星号*,IE7能識别星号*,當不能識别下劃線_,而firefox兩個都不能認識。等等

書寫順序,一般是将識别能力強的浏覽器的CSS寫在後面。下面如何寫裡面說得更詳細些。

比如要分辨IE6和firefox兩種浏覽器,可以這樣寫: 

<style>   

div{   

      background:green; /* for firefox */   

      *background:red;  /* for IE6 */   

}   

</style>   

<div>我在IE6中看到是紅色的,在firefox中看到是綠色的。</div>  

<style> div{  background:green; /* for firefox */    *background:red;  /* for IE6 */ } </style> <div>我在IE6中看到是紅色的,在firefox中看到是綠色的。</div>

解釋一下:

上面的css在firefox中,它是認識不了後面的那個帶星号*的東東是什麼的,于是将它過濾掉,不予理睬,解析得到的結果是:div{background:green},于是理所當然這個div的背景是綠色的。

在IE6中呢,它兩個background都能識别出來,它解析得到的結果是:div{background:green;background:red;},于是根據優先級别,處在後面的red的優先級高,于是當然這個div的背景顔色就是紅色的了。

區分IE6,IE7,firefox差別不同浏覽器,CSS hack寫法:

差別IE6與FF:

       background:orange;*background:blue;

差別IE6與IE7:

       background:green !important;background:blue;

差別IE7與FF:

       background:orange; *background:green;

差別FF,IE7,IE6:

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

注:IE都能識别*;标準浏覽器(如FF)不能識别*;

IE6能識别*,但不能識别 !important,

IE7能識别*,也能識别!important;

FF不能識别*,但能識别!important;

   IE6 IE7 FF 

* √ √ × 

!important × √ √ 

另外再補充一個,下劃線"_",

IE6支援下劃線,IE7和firefox均不支援下劃線。

于是大家還可以這樣來區分IE6,IE7,firefox

: background:orange;*background:green;_background:blue; 

注:不管是什麼方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在最後面。

附:CSS的各種浏覽器相容一欄表

本文轉自 liudao 部落格園部落格,原文連結:http://www.cnblogs.com/liudao/archive/2007/09/21/901055.html,如需轉載請自行聯系原作者

繼續閱讀