我可能有两种类型的HTML ...
一:
<div>
<h4></h4><!--not to this-->
<p></p>
</div>
二:
<div>
<h4></h4><!--this should be styled--->
<h4></h4>
<p></p>
</div>
只有在示例中包含两个h4
标记时,所有样式都是相同的,但只与第一个h4
标记的h4
边界相同。怎么做而不改变html?
答案 0 :(得分:6)
您可以合并:first-child
,:not()
和:only-of-type
伪类来实现这一目标。
你走了:
h4:first-child:not(:only-of-type) {
background-color: gold;
}
<强> WORKING DEMO 强>
此选择器代表<h4>
元素,它是其父项的第一个孩子,而 <唯一 TYPE 父母子树中的元素。
来自MDN:
:only-of-type
CSS伪类表示具有的任何元素 没有给定类型的兄弟姐妹。
如果<h4>
元素不是其父项的第一个孩子,我们可以选择第一个<h4>
元素并使用:first-of-type
达到相同的效果伪类如下:
h4:first-of-type:not(:only-of-type) {
background-color: gold;
}
<强> UPDATED DEMO 强>
有关:first-of-type
vs :first-child
的详细信息,请在此处提及my answer。
答案 1 :(得分:2)
只有当父级包含两个相邻标题时,您才需要设置第一个border-bottom
的{{1}}样式
然后您可以设置第二个h4
的{{1}}样式并获得相同的效果
border-top
如果只有一个标题,则不会应用任何样式。如果您有两个或更多相邻标题,则会应用它们之间的边框
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以使用First-child类。
我看起来像这样:
div h4:first-child{
CODE HERE
}
答案 4 :(得分:0)
我认为如果可能的话,你最好设置第二个h4
,因为你无法用CSS判断div中是否有一个或两个h4
。
您可以使用nth-child
div h4:nth-child(2) {
// your styles.
}