我具有如下HTML结构,其中包含重复的img和p标签对。在许多情况下,不存在img。
<img>
<p></p>
<img>
<p></p>
<img>
<p></p>
<p></p>
<p></p>
<img>
<p></p>
我希望选择所有未紧接img的p标签。
我可以选择 开头为img的p个标签:
img + p {}
如何选择反函数? -例如,没有img的p标签?
答案 0 :(得分:2)
由于没有“上一个同级”选择器,因此可以对标准p
元素进行样式设置,然后覆盖以img
开头的 元素。使用默认样式。
不过,最好将其包装在容器中,以免页面上的每个p
都没有样式。
.container > p {
color: red;
}
.container > img + p {
color: black;
}
/* DEMO PURPOSES */
img { display: none; } img, p { margin: 0; }
<div class="container">
<img />
<p>This is preceded by img</p>
<img />
<p>This is preceded by img</p>
<img />
<p>This is preceded by img</p>
<p>This is not preceded by img</p>
<p>This is not preceded by img</p>
<img />
<p>This is preceded by img</p>
</div>
答案 1 :(得分:1)
直到我编写此答案为止,CSS
均未提供前一个元素的选择器。
对于您的情况,作为一种解决方法,假设将这些p
和img
标签放在包装div.wrapper
中,请考虑尝试以下方法:
.wrapper > img + p ~ p {
color: red;
}
.wrapper > img + p {
color: black !important;
}
<div class="wrapper">
<img style="height:20px;display:block;" src="http://via.placeholder.com/350x250" />
<p>unaffected</p>
<p>affected</p>
<p>affected</p>
<img style="height:20px;display:block;" src="http://via.placeholder.com/350x250" />
<p>unaffected</p>
<p>affected</p>
<img style="height:20px;display:block;" src="http://via.placeholder.com/350x250" />
<p>unaffected</p>
</div>
希望我进一步推动了你。