【发布时间】:2015-07-07 12:18:40
【问题描述】:
我有一些这样的嵌套元素:
<div class="foo">
<div class="select-inside-this">
<div class="not-inside-this">
<div class="one select-this"></div>
</div>
</div>
</div>
<div class="select-inside-this">
<div class="two select-this"></div>
</div>
<div class="three select-this"></div>
我想选择.select-inside-this 中的所有.select-this,但不选择.not-inside-this 中的所有.select-this。所以最后,我应该只能从上面的代码中选择two.select-this。
我尝试过但不起作用的 CSS:
.select-inside-this :not(.not-inside-this) .select-this {
/* style here /*
}
或:
.select-inside-this *:not(.not-inside-this) .select-this {
/* style here /*
}
这里有什么解决方法吗?
我不想在这里使用 JavaScript。我需要纯 CSS3 解决方案。
编辑:我不想使用直接子 (>) 选择器。正如我所问的,我想在没有异常包装器的情况下从任何级别选择所有这些元素。
【问题讨论】:
-
这里不能使用
.select-inside-this :not(.not-inside-this) .select-this来选择需要的.two.select-this元素的原因是:not(.not-inside-this)仍然需要匹配一个元素才能让整个选择器匹配(只要any 元素 not 具有某种特征)——但在.select-inside-this和.select-this之间没有任何元素可以满足这一点,因此整个选择器 不能匹配这个元素。 -
这是有道理的。但是为什么
.select-inside-this *:not(.not-inside-this) .select-this doesn't工作? -
因为基本上是一样的东西。
*:not()或:not(),没有任何区别,都选择 不 具有指定特征的 any 元素。
标签: html css css-selectors