2009-06-20 73 views
1

長時間的讀者,第一次海報問:如何讓IE6尊重類屬性?

經過了數週的谷歌和論壇拖網,我仍然處於虧損狀態。我有一系列嵌套的div,一些帶有ID,一些帶有類,一些帶有ID和類。

這是嚴格的XHTML,並進行驗證。 原始碼http://www.drewsonne.com/melonstack/?topic=brisbane

例如。

<div id="main"> 
    <div class="rEntry" id="r1"> 
    <a href="http://www.brisbane.com">City of Brisbane</a><br> 
    <span id="rSum1" class="rSum">This is a website summary</span> 
    </div> 
    <div class="rEntry" id="r2"> 
    <a href="http://www.brisbane.gov.au">City of Brisbane</a><br> 
    <span id="rSum2" class="rSum">This is a website summary as well</span> 
    </div> 
    ... et cetera ... 
</div> 

出於測試的目的,我的CSS目前看起來像這樣

.rEntry{ 
    padding:10px; 
    margin:10px; 
} 

對於我的生活,我不能讓這種風格在IE6在所有的工作。如果我更改爲#r1,#r2或div,則將樣式應用於適當的元素,但div.rEntry和.rEntry都不會使樣式保持不變。有誰知道我出錯的地方嗎?

DJS。

+2

請開始忽略IE6!如果你不這樣,它會永遠活着...告訴他們升級...只要告訴他們至少升級到7或8 .. – Thomaschaaf 2009-06-20 08:40:27

+0

Thomaschaaf:IE6仍然在15%左右的使用份額。根據網站關閉15%用戶可能是一個非常糟糕的主意。德魯:你爲什麼使用ID「rsum1」兩次?在整個文檔中ID必須是唯一的。 – Joey 2009-06-20 08:54:41

+0

Oop,這是一個錯字。 – Drew 2009-06-20 08:59:02

回答

3

現在,在您提供的鏈接上查看HTML,我沒有看到任何帶有rEntry類的div。然後我意識到,它們是動態生成的。這提醒我,對於IE6,通過DOM添加CSS類時,必須使用className屬性,而不是class。換句話說,IE6 DOM沒有看到div是rEntry類的。

這些div如何生成?如果它是通過你自己的代碼,你可能想嘗試修改你的元素的類和className屬性。

編輯:它看起來像是在腳本/ REsultsList.js中。嘗試改變這行:

entry_div_element.setAttribute('class', 'rEntry'); 

到:

entry_div_element.setAttribute('class', 'rEntry'); 
entry_div_element.className = 'rEntry'; 
3

我有三條建議:

  1. 使用reset CSS(有這幾條左右);
  2. Use a DOCTYPE declarationUse a DOCTYPE declaration,如果你還沒有,強迫IE進入符合標準的模式(當然,因爲符合IE的標準),而不是怪癖模式。我通常使用HTML 4.01過渡,但如果你嚴格遵守,甚至更好;
  3. 使用元素名稱對您的樣式進行限定。

例如:

div.rEntry { 
    padding:10px; 
    margin:10px; 
} 

更具體的風格,在CSS確定哪一個應用越大,它的重要性。你可以看到,如果用!important測試它那問題:

div.rEntry{ 
    padding:10px !important; 
    margin:10px !important; 
} 

如果可修復採取優先次序的問題,那麼您有其它CSS。我懷疑這是問題,因爲#id選擇器的優先級高於.class選擇器,這是您所看到的行爲。

注意:我不推薦使用!important作爲一般規則,只是爲了找出CSS優先順序的問題。一旦確定,通常最好將它們修復爲「正確」的方式。

0

我剛剛去了「原代碼」鏈接,你的CSS寫着:

div.rEntry{ 
    margin:10px !important; 
} padding:10px !important; 

它看起來像你的填充樣式是支架的外側。你確定這不僅僅是由於錯字嗎?