重读CSS2.1和CSS3选择器规格后我怀疑这是不可能的,但你永远不知道。
如果我可以选择一个p元素,那么使用CSS后代选择器就是其他p元素的后代:
p p {};
有没有办法否定后代选择器,仍然选择类型,所以我可以选择p元素,除了那些是其他p元素的后代......
p & ( p ! p ) {...};
即。我想选择p类型的元素,但是如果它们偏离p。
类型的其他元素则不是BTW:我在querySelector()和querySelectorAll()中使用它,其中每个都是由属性而非标签类型选择的,但我想展示最简单的例子......
我尝试了这个没有成功(语法错误!)
p:not(p p) {......}
答案 0 :(得分:3)
答案 1 :(得分:3)
你怀疑是正确的,这是不可能的。 :not(s)
指定s
必须是简单选择器。
您可以做的最近的事情是将样式应用于所有p
,然后将其覆盖为p p
。
答案 2 :(得分:1)
虽然:not(...)
选择器只是CSS3,但我通常使用它来兼容CSS2:
p { color: #abc; border: ... ; ... }
h1 > p { color: inherit; border: inherit; ... }
如果你的<p>
有一个共同的祖先,即你的html看起来像这样:
<body>
<p> ... </p>
<p>
<p> ... </p>
<p> ... </p>
</p>
</body>
您可以使用“直接子”选择器:
body > p { ... }
或者,当然,使用以下内容重置所有属性:
p p { color: inherit; background: inherit; ... }
也可以。