I may have two types of html...
One:
<div>
<h4></h4><!--not to this-->
<p></p>
</div>
二:
<div>
<h4></h4><!--this should be styled--->
<h4></h4>
<p></p>
</div>
所有的样式都相同,只是给第一个
h4
标签的底部添加边框,但仅当它包含两个 h4
标签时才这样做。如何在不更改 HTML 的情况下实现?I may have two types of html...
One:
<div>
<h4></h4><!--not to this-->
<p></p>
</div>
二:
<div>
<h4></h4><!--this should be styled--->
<h4></h4>
<p></p>
</div>
h4
标签的底部添加边框,但仅当它包含两个 h4
标签时才这样做。如何在不更改 HTML 的情况下实现?:first-child
、:not()
和 :only-of-type
伪类来实现这一点。h4:first-child:not(:only-of-type) {
background-color: gold;
}
工作演示。
这个选择器表示父元素的第一个子元素,而它不是父元素的子树中唯一的类型元素。
来自MDN:
:only-of-type
CSS 伪类表示没有给定类型的兄弟元素的任何元素。
如果<h4>
元素不是其父元素的第一个子元素,我们可以使用:first-of-type
伪类选择第一个<h4>
元素并实现相同的效果,如下所示:
h4:first-of-type:not(:only-of-type) {
background-color: gold;
}
关于:first-of-type
和:first-child
的更多细节,您可以在这里查看我的答案。
:first-of-type
替换 :first-child
对我来说并不算特别疯狂 ;) - BoltClock如果父元素包含两个相邻的标题,您需要为第一个h4
样式化border-bottom
然后,您可以为第二个h4
样式化border-top
以获得相同的效果
h4 + h4 {
border-top: ...
}
你可以使用 First-child 类。
它可能看起来像这样:
div h4:first-child{
CODE HERE
}
我认为如果可能的话,最好对第二个h4
进行样式设置,因为您无法使用CSS判断