【问题标题】:class in class, bug in ie6课堂中的课堂,ie6中的错误
【发布时间】:2024-12-22 14:30:01
【问题描述】:

我正在编写 HTML/css 代码并且在 IE6 中有一个特定的错误。

我想创建可变的 div,使用类:

例如(这只是示例,不是实际项目代码)

.top {width: 50px;}
.top.selected {background: #f00;}
.mid {width: 114px;}
.mid.selected {background: #0f0;}
.bot {width: 100px;}
.bot.selected {background: #0ff; color: #f00;}
...etc...

所以,html 就像一个:

<div class='top selected'>1</div>
<div class='mid'>2</div>
<div class='bot selected'>3</div>

这对程序员来说很棒,但它在 IE6 中不起作用:(

仅限.topselected {background: #f00;} // &lt;div class='top topselected'&gt; ,但它确实是肮脏的代码......也许有些有一些黑客?

【问题讨论】:

  • 支持 IE6……真的吗?
  • 克罗津,是的。我想,如果 html-coder 不会写 crossbrowser-code,那他就是个新手……加一些 !important 标签也不是太难。
  • 甚至微软也放弃了 IE6。分手后要往前看了。哦,跨浏览器编码不适用于 IE6。它适用于遵循标准的浏览器。
  • 恭喜,你为自己打开了 IE 的新世界:) 可能 html 标签的条件类是你需要的,或者至少是条件样式表
  • 您将浪费两倍或三倍的时间来解决问题,您的代码和设计将变得丑陋,所有这些辛勤工作将仅仅因为世界上不到 1% 的人,可能没有人。

标签: html css class internet-explorer-6


【解决方案1】:

似乎去这里的方法是创建更多语义类名称,然后将它们拆分如下:

.highlighted { background: #0f0; }
.wide { width: 114px; }
/* etc... */

然后您拥有的 html 将运行良好,并且 IMO 更易于维护。

【讨论】:

  • IE6 不支持多类!
  • @falsarella IE6 确实支持 class="foo bar" 但不支持 CSS .foo.bar,因此这是有效的。
  • 在您的示例中,它会识别foo 类吗?我认为它只会识别bar 类,即使使用.foo{} .bar{} 它也会忽略foo css 声明......
  • @fasarella:它确实可以识别所有这些。这是您可以使用 BrowserStack 或 Sauce Labs 运行的测试:jsfiddle.net/uJsJv - 我刚刚验证了它。