90

正如您可能已经知道的那样,您可能有多个由空格分隔的元素上的类。

例子

<div class="content main"></div>

使用 CSS,您可以div使用.content或来定位它.main当且仅当两个类都存在时,有没有办法针对它?

例子

<div class="content main">I want this div</div>
<div class="content">I don't care about this one</div>
<div class="main">I don't want this</div>

我将使用哪个 CSS 选择器来获得第一个div(假设我不能使用.content:first-child或类似的)?

4

2 回答 2

142

是的,只需将它们连接起来:.content.main. 请参阅CSS 类选择器

但请注意,最高版本 6 的 Internet Explorer 不支持多个类选择器,仅支持最后一个类名。

于 2009-03-13T00:20:29.353 回答
11

只是为了它(我真的不建议你这样做),还有一种方法可以做到:

.content[class~="main"] {}

或者:

.main[class~="content"] {}

参考:http ://www.w3.org/TR/CSS2/selector.html

E[foo~="warning"] 匹配任何“foo”属性值为空格分隔值列表的 E 元素,其中一个值完全等于“warning”

演示:http: //jsfiddle.net/eXrSg/

为什么这实际上很有用(至少对于 IE6):

由于 IE6 不支持多类,我们不能使用.content.main但是有一些像IE-7.js这样的 javascript 库启用了属性选择器,但是当涉及到多个类时似乎仍然失败。我已经在 IE6 中使用启用属性选择器的 javascript 测试了这个解决方法,它很丑陋,但它可以工作。

我还没有找到使 IE6 支持多个类选择器的脚本,但我发现了许多启用属性选择器的脚本。如果有人知道一个可行的方法,请在评论中给我留言,这样我就可以摆脱这种解决方法。

于 2011-08-21T05:39:55.983 回答