2008-10-03 55 views
17

當IE8發佈時,下面的代碼是否可以添加一個條件樣式表?將針對帶有條件註釋的IE8工作嗎?

<!--[if IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie-8.0.css" /> 
<![endif]--> 

我讀過矛盾的報導,這是否與工作公測。我希望有人可以分享他們的經驗。謝謝。

+2

很好。另一個來自微軟的非標準擴展。 – 2008-10-03 16:23:02

+9

這個非常古老,非常有用,因爲它允許非黑客CSS開關爲MSIE提供不同的樣式表。 – 2008-10-03 17:10:18

+0

這個問題應該很久以前關閉了。 – 2010-03-09 14:45:53

回答

14

它適用於我 - 無論是在怪癖模式和標準遵從模式。但是,在切換到IE8兼容模式時,它不會而不是工作。

+1

您是不是指IE7兼容模式? – Devon 2008-10-03 16:26:46

+1

否:Beta 2具有瀏覽器模式和文檔模式。文檔模式支持IE 7的兼容性(以及嚴格模式和怪癖模式)。瀏覽器模式具有「IE 7」,「IE 8」和「IE 8兼容模式」選項。我正是這個意思。 – 2008-10-03 17:09:33

21

有一點需要注意:

它的工作,如果要加載的網頁/網站本地網絡(例如內聯網)將在IE7模式下加載默認情況下!(更新 - localhost [*]是一個特殊的情況下,在標準模式渲染)

這違背MSFT的原始的默認標準去聲明。

例如

http://127.0.0.1/mysite/mypage.php <-- IE8 by default (updated!) 
http://localhost/mysite/mypage.php <-- IE8 by default (updated!) 
http://machinename/mysite/mypage.php <-- IE7 by default 
http://192.168.100.x/mysite/mypage.php <-- IE7 by default 
http://google.com/ <-- IE8 by default 

[*] - 斯科特狄更斯[MSFT]在評論here on the IE Blog使localhost是在Intranet特殊情況說明(通常用於開發互聯網網站),因此在默認情況下在標準模式將使。

要測試什麼模式,IE8的網頁是真正的渲染,你可以使用檢查開發者工具或使用該書籤的代碼(僅適用於IE8):

javascript: 
var vMode=document.documentMode; 
var rMode='IE5 Quirks Mode'; 
if(vMode==8){ 
    rMode='IE8 Standards Mode'; 
} else if(vMode==7){ 
    rMode='IE7 Strict Mode'; 
} 
alert('Rendering in: '+rMode); 
3

工具/兼容性視圖設置

取消選中全部

0

感謝您的幫助。我發現了這個解決方案,顯然問題是每個樣式表都使用它自己的title屬性。一旦我除了主要樣式表之外的所有標題都沒有問題。

這是IE8獨有的一個奇怪問題 - 雖然我被告知它應該以這種方式工作,但與「樣式表偏好」有關 - 它只會產生問題,因爲解決方案需要刪除標題這在編寫腳本等時很有用 - 當您需要調用樣式表時。

無論如何,不​​知道這是一個錯誤還是它應該是這樣,但我希望微軟進一步調查。

謝謝

0

爲什麼還打擾寫一個單獨的樣式表爲IE8?

如果您已經調試過IE7,您可以強制IE8進入兼容模式,從而顯示您的代碼,就像IE8是IE7一樣。

所有你需要做的就是把這個正確的開頭標籤。其他任何地方,它都無法工作。

然後每個項目的平均工作時間大約爲半小時,IE8不需要緊張的調試!

即使Msn.com這樣做 - 有點諷刺,呃?

寫了一篇博客關於它最近:相對於IE7,我對IE6,IE7和IE8樣式http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get-ie8-to-behave-like-ie7/

0

IE8呈現相當不錯;起初,我認爲有條件的評論不適用於IE8經過一些實驗後,我發現有些規則不適用於IE8,因爲我需要先將祖先或父類放在第一位,例如 我有一類像

.niceclass {some:properties;more:properties;}

它的工作只有,如果我改變了它的東西,如:

.parentclass .niceclass {some:properties;more:properties;}

#parentselector .niceclass {some:properties;more:properties;}

順便說一句,我IE8-只有CSS我只有一個壓倒一切的規則,其餘的都是阿爾姆ost就像firefox,儘管這不會讓我離開FF!

0

對於我而言,我想使用使用CSS的圓角邊框。 Vista上的IE8不支持這樣的。而且由於圖形使得圓形的邊框也會顯示出不錯的圓形陰影,所以在IE8中頁面看起來很糟糕。

我試過使用條件註釋,但無濟於事,IE8不會評估IE瀏覽器表達式,因此不會包含外部樣式表。

然後我看了一下把它變成怪癖/兼容模式,但是,這仍然不工作,因爲我用過的CSS黑客不再爲IE8工作。

最後但至少我發現了一個可以在兼容模式下正確渲染頁面的正常工作的CSS hack。

* + html #test[id] { color:lime } 

現在,我不知道,如果這個工程的IE7或以下,那麼你就必須爲每個IE至少三種不同 黑客放出要支持,E.E.

* + html #test, 
    html+body #test, 
    * html body #test 
    { color:lime } 

我想知道下一個Internet Exploiter的迴歸會爲我們帶來什麼。