2009-06-20 40 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; 

它看起来像你的填充样式是支架的外侧。你确定这不仅仅是由于错字吗?