【发布时间】:2017-07-25 21:47:06
【问题描述】:
似乎 CSS 是右关联的,并且与编程语言不同,您不能用括号来影响它。
我有这个一般结构:
<div>
<div class='pizza'></div>
</div>
<p>Select me! Select me!</p>
<div>
<div class="pizza">
<p>Do NOT select me!</p>
</div>
</div>
我无法找出一个 <p> 的选择器,该选择器位于包含 <div class="pizza"> 的兄弟 <div> 之后。
我试过这个,但 CSS 的从右到左的关联性并没有产生我想要的:
div > div.pizza + p
我知道这是不对的。
有人可以指点一下吗?
【问题讨论】:
-
当前 CSS3 选择器无法实现。
-
你不能因为
.pizza不是p元素的兄弟。有no parent selector in CSS3。 -
如果你需要设置
<p>元素的样式,我建议给它们添加一个类,或者给父元素添加一个类,这样你就可以使用.parent > p -
这与 CSS 是否具有正确关联性无关。事实上,它不是 - 它实际上是关联的,这在某些情况下很重要。但不是这个,因为
div > div.pizza并不意味着“一个div的孩子是div.pizza”,它的意思是“一个div.pizza,其父母是div”。此组合子链的右关联解释div > (div.pizza + p)和左关联解释(div > div.pizza) + p具有相同的最终含义,因此在这种情况下关联性的方向无关紧要。
标签: css css-selectors