CSS2多分类

时间:2009-07-15 14:39:42

标签: html css class

我有以下HTML:

<DIV class="foo bar"></DIV>

我正在尝试创建一个匹配所述元素的CSS类声明。通过specs on section 8.2.3,我想这应该可行:

DIV.foo.bar { border-color: black; }

但我已经在IE和Safari上测试过,两者都不会影响元素。任何技巧如何使这项工作?

3 个答案:

答案 0 :(得分:5)

这里有三个问题。

<强> 1。你的表达和HTML是否正确?

您的div没有边框宽度(根据您发布的内容),因此您可能无法获得边框。尝试:

<div class="foo bar"></div>

div.foo.bar { border: 1px solid black; }

<强> 2。你有没有高度?

你的div(基于你发布的内容)没有高度。现在在某些浏览器上,它们将呈现为边框粗细的实线。根据相邻元素和边框折叠设置(特别是在Firefox上,而不是IE / Safari),在某些情况下,该边框可能会消失。

第3。 IE6不能正确支持多个类选择器

多个类选择器在IE6中无法正常工作。请参阅multiple classesbrowser support table

通常这里的技巧是嵌套div:

<div class="foo"><div class="bar"></div></div>

然后当然:

div.foo div.bar { ... }

显然不是一回事,但你没有太多选择。另一种方法是手动组合类:

div.foo { background: red; }
div.bar { border: 1px solid black; }
div.foobar { background: red; border: 1px solid black; }

<div class="foobar"></div>

再次,远非理想。但是在IE6上只能做到这么多。

答案 1 :(得分:4)

我认为这是因为您指定的是“border-color:black”而没有边框宽度或边框样式。尝试设置“border:solid 1px black”并查看是否有效。

答案 2 :(得分:2)

IE6 doesn't support选择器在同一元素上有多个类。 IE-7.js脚本据说可以解决这个问题。

您的选择器在IE7 +和最新版本的Safari中应该可以正常工作。