西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → IE中奇怪的應(yīng)用CSS的BUG

IE中奇怪的應(yīng)用CSS的BUG

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時(shí)間:2010/9/19 22:24:14字體大。A-A+

作者:佚名點(diǎn)擊:31次評論:17次標(biāo)簽: IE CSS

  • 類型:圖像瀏覽大。13.0M語言:英文 評分:3.6
  • 標(biāo)簽:
立即下載

 由于IE系瀏覽器對標(biāo)準(zhǔn)的支持不夠好,導(dǎo)致Web開發(fā)中經(jīng)常需要去處理瀏覽器兼容性問題,特別有些莫名其妙的問題很讓人頭疼,今天要說這個(gè)問題就是這樣的,先從插入CSS的三種方法說起:

 

外部樣式(External Style Sheet)

  當(dāng)樣式需要應(yīng)用于很多頁面時(shí),外部樣式表將是理想的選擇。在使用外部樣式表的情況下,你可以通過改變一個(gè)文件來改變整個(gè)站點(diǎn)的外觀。每個(gè)頁面使用 <link> 標(biāo)簽鏈接到樣式表。<link> 標(biāo)簽在(文檔的)頭部:

1 <head>

2 <link rel="stylesheet" type="text/css" href="mystyle.css" />

3 </head>

內(nèi)部樣式(Internal Style Sheet)

  當(dāng)單個(gè)文檔需要特殊的樣式時(shí),就應(yīng)該使用內(nèi)部樣式表。你可以使用 <style> 標(biāo)簽在文檔頭部定義內(nèi)部樣式表,就像這樣:

1 <head>

2 <style type="text/css">

3 hr {color: sienna;}

4 p {margin-left: 20px;}

5 body {background-image: url("images/back40.gif");}

6 </style>

7 </head>

內(nèi)聯(lián)樣式(Inline Styles)

  由于要將表現(xiàn)和內(nèi)容混雜在一起,內(nèi)聯(lián)樣式會損失掉樣式表的許多優(yōu)勢。請慎用這種方法,例如當(dāng)樣式僅需要在一個(gè)元素上應(yīng)用一次時(shí)。要使用內(nèi)聯(lián)樣式,你需要在相關(guān)的標(biāo)簽內(nèi)使用樣式(style)屬性。Style 屬性可以包含任何 CSS 屬性。

1 <p style="color: sienna; margin-left: 20px">This is a paragraph</p>

多重樣式(Multiple Styles)

  如果外部樣式、內(nèi)部樣式和內(nèi)聯(lián)樣式同時(shí)應(yīng)用于同一個(gè)元素,就是使多重樣式的情況,一般情況下優(yōu)先級如下:

 

 。ㄍ獠繕邮剑〦xternal style sheet <(內(nèi)部樣式)Internal style sheet <(內(nèi)聯(lián)樣式)Inline style

 

  之所以說是一般情況是因?yàn)榭梢允褂?important來改變這種順序,比如外部樣式如果某個(gè)樣式項(xiàng)使用了!important來提高優(yōu)先級,其優(yōu)先級將比內(nèi)聯(lián)樣式高。還有個(gè)例外的情況就是如果外部樣式放在內(nèi)部樣式的后面,則外部樣式將覆蓋內(nèi)部樣式:

01 <head>

02 <!--內(nèi)部樣式-->

03 <style>

04 h3{color:green;}

05 </style>

06

07 <!--外部樣式style.css-->

08 <!--h3{color:blue;}-->

09 <link rel="stylesheet" type="text/css" href="style.css"/>

10 </head>

11 <body>

12 <h3>測試!</h3>

13 </body>

  文字的顏色將是藍(lán)色,因?yàn)橥獠繕邮降乃{(lán)色覆蓋了內(nèi)部樣式的綠色,這在主流瀏覽器中表現(xiàn)都是一致的,包括IE在內(nèi)。然而另外一種方式插入樣式,IE就表現(xiàn)出它的另類了。這種方法是使用腳本在外部樣式前插入內(nèi)部樣式,即上面的內(nèi)部樣式用腳本創(chuàng)建出來,代碼如下:

01 (function(){

02 var agent = window.navigator.userAgent.toLowerCase();

03 var is_op = (agent.indexOf("opera") != -1);

04 var is_ie = (agent.indexOf("msie") != -1) && document.all && !is_op;

05 var is_ch = (agent.indexOf("chrome") != -1);

06

07 var cssStr="h3 {color:green;}";

08 var s=document.createElement("style");

09 var head=document.getElementsByTagName("head").item(0);

10 var link=document.getElementsByTagName("link");

11 link=link.item(0);

12

13 if(is_ie)

14 {

15 if(link)

16 head.insertBefore(s,link);

17 else

18 head.appendChild(s);

19 document.styleSheets.item(document.styleSheets.length-1).cssText=cssStr;

20 }

21 else if(is_ch)

22 {

23 var t=document.createTextNode();

24 t.nodeValue=cssStr;

25 s.appendChild(t);

26 head.insertBefore(s,link);

27 }

28 else

29 {

30 s.innerHTML=cssStr;

31 head.insertBefore(s,link);

32 }

33 })();

  在Firefox/Chrome/Safari/Opera中測試文字都是藍(lán)色的,符合外部樣式如果插入到內(nèi)部樣式前的話,外部樣式將覆蓋內(nèi)部樣式的原則,然而在IE下卻是綠色的,也就是說IE在加載完頁面文檔,運(yùn)行了腳本插入了內(nèi)部樣式之后,就把文字顏色設(shè)置成綠色了而忽略了后面外部樣式。不知道大家是否也碰到這樣的問題,歡迎討論......

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(17)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)