只有当存在2个类时,才能使用CSS定位元素吗?

ale*_*lex 79 css css-selectors

您可能已经知道,在空格分隔的元素上可能有多个类.

<div class="content main"></div>
Run Code Online (Sandbox Code Playgroud)

并与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>
Run Code Online (Sandbox Code Playgroud)

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

Gum*_*mbo 125

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

但请注意,版本6以下的Internet Explorer不支持多个类选择器,只是尊重最后一个类名.


Wes*_*rch 11

只是为了它的缘故(我真的不建议你这样做),有另一种方式来做到这一点:

.content[class~="main"] {}
Run Code Online (Sandbox Code Playgroud)

要么:

.main[class~="content"] {}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

由于IE6不支持多个类,我们不能使用.content.main,有一些javascript库如IE-7.js启用了属性选择器,但在涉及多个类时似乎仍然失败.我已经在IE6中使用javascript启用了属性选择器测试了这个变通方法,它很难看,但它确实有效.

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