又抓到蟲子了 IE中奇怪的應用CSS的BUG

2021-09-27 18:54:18 字數 1635 閱讀 9977

由於ie系瀏覽器對標準的支援不夠好,導致web開發中經常需要去處理瀏覽器相容性問題,特別有些莫名其妙的問題很讓人頭疼,今天要說這個問題就是這樣的,先從插入css的三種方法說起:

外部樣式(external style sheet)

當樣式需要應用於很多頁面時,外部樣式表將是理想的選擇。在使用外部樣式表的情況下,你可以通過改變乙個檔案來改變整個站點的外觀。每個頁面使用 標籤鏈結到樣式表。標籤在(文件的)頭部:

內部樣式(internal style sheet)

當單個文件需要特殊的樣式時,就應該使用內部樣式表。你可以使用 標籤在文件頭部定義內部樣式表,就像這樣:

內聯樣式(inline styles)

由於要將表現和內容混雜在一起,內聯樣式會損失掉樣式表的許多優勢。請慎用這種方法,例如當樣式僅需要在乙個元素上應用一次時。要使用內聯樣式,你需要在相關的標籤內使用樣式(style)屬性。style 屬性可以包含任何 css 屬性。

this is a paragraph

多重樣式(multiple styles)

如果外部樣式、內部樣式和內聯樣式同時應用於同乙個元素,就是使多重樣式的情況,一般情況下優先順序如下:

(外部樣式)external style sheet <(內部樣式)internal style sheet <(內聯樣式)inline style

之所以說是一般情況是因為可以使用!important來改變這種順序,比如外部樣式如果某個樣式項使用了!important來提高優先順序,其優先順序將比內聯樣式高。還有個例外的情況就是如果外部樣式放在內部樣式的後面,則外部樣式將覆蓋內部樣式:

文字的顏色將是藍色,因為外部樣式的藍色覆蓋了內部樣式的綠色,這在主流瀏覽器中表現都是一致的,包括ie在內。然而另外一種方式插入樣式,ie就表現出它的另類了。這種方法是使用指令碼在外部樣式前插入內部樣式,即上面的內部樣式用指令碼建立出來,**如下:

(function()";

var s=document.createelement("style");

var head=document.getelementsbytagname("head").item(0);

var link=document.getelementsbytagname("link");

link=link.item(0);

if(is_ie)

else if(is_ch)

else

})();

在firefox/chrome/safari/opera中測試文字都是藍色的,符合內部樣式如果插入到外部樣式前的話,外部樣式將覆蓋內部樣式的原則,然而在ie下卻是綠色的,也就是說ie在載入完頁面文件,執行了指令碼插入了內部樣式之後,就把文字顏色設定成綠色了而忽略了後面外部樣式。不知道大家是否也碰到這樣的問題,歡迎討論......

更多專業前端知識,請上

【猿2048】www.mk2048.com

抓到兩隻IE8的蟲子

蟲子1 眾所周知,ie8是充分相容w3標準的,但是它居然不支援hr標籤的size屬性,如下 hr noshade size 1 class clear 我已經把size設定成1,但是在ie8下面的顯示居然是這樣的 但是ie6,ie7,和firefox3都沒有這個問題,正常的顯示如下圖 大家可以看具體...

CSS中IE的IF條件使用注釋

在css布局中,還常常用到ie hack。if ie條件注釋的使用就起著很大的作用。if ie什麼意思呢?下面就列舉了一些在css常見的hack控制語句。除ie外都可識別 所有的ie可識別 只有ie5.0可以識別 僅ie5.0與ie5.5可以識別 ie5.0以及ie5.0以上版本都可以識別 僅ie6...

CSS中float的應用

自從工作了之後就沒更新部落格。工作了之後從事了前端和後台的工作,好多事情都要從頭開始學。剛入職不久就丟了不少很雜碎的任務給我。在剛開始調樣式的時候覺得好心累,感覺都控制不了那些樣式,又不能像做android的xml介面那樣拖來拖去,好煩。今天接觸了一天float,感覺還是挺多學問的。浮動的規則 浮動...