2011-06-13 17 views
4

我有一個包含有這樣一個ID的CSS線動態加載CSS文件:強調在IE9怪異模式CSS ID的開頭不註冊

#__my_css_id{ 

    width: 100%; 
    height: 100%; 
    left: 0px; 
    top: 0px; 
    position: fixed; 
    background-color: #202020; 
} 

我不能改變這個頁面被渲染的事實在怪癖模式,因爲它是一個遠程託管腳本(我的腳本是)。有些頁面是怪癖,有些則不是。

當在怪癖模式和IE9(沒有嘗試其他IE版本)的CSS似乎並沒有正確加載或根本沒有。事實上,如果我使用IE調試器(F12)調試CSS,然後我看到所有的CSS,但所有的CSS IDS說UNKNOWN,如果他們開始像這樣的兩個下劃線#__

如果我調試元素,並檢查CSS,沒有任何CSS規則在那裏。奇怪模式不允許在CSS ID開頭的下劃線?

謝謝!

+2

對於初學者來說,ID應該以一個字母開頭,這樣就沒有技術上合法的標記。這不僅適用於怪癖模式;這仍然是標準模式的有效規則。請參閱:http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – vcsjones 2011-06-13 04:05:32

+0

我試圖避免命名衝突,所以我想我會安全的添加下劃線。什麼會是更好的解決方案? – 2011-06-13 04:30:08

+0

只是「命名空間」您的ID以避免衝突,類似於您已經在做的事情,但具有有效的價值。例如:'#MY-id1#MY-id2'。 (並且記住它們區分大小寫) – 2011-06-13 04:37:34

回答

2

雙下劃線在CSS2中起作用,但quirks mode是CSS1的部分實現。所述CSS2 spec說:

CSS2中,標識符(包括元素名,類和在選擇器的ID)只能包含字符[A-ZA-Z0-9]和ISO 10646字符U + 00A0和更高,加上連字符( - )和下劃線(_); 它們不能以數字,兩個連字符或連字符後跟數字開頭。標識符還可以包含轉義字符和任何ISO 10646字符作爲數字代碼(請參見下一項)。例如,標識符「B & W?」可寫成「B \ & W \?」或「B \ 26 W \ 3F」。

雖然下劃線是無效的字符在CSS1

在CSS1,選擇器(元素名,類和ID)可以只包含字符AZ,0-9,和Unicode字符161-255 ,加破折號( - );他們不能以短劃線或數字開頭;它們也可以包含轉義字符和任何Unicode字符作爲數字代碼(參見下一項)。