例如,我有这样的代码:
<div class="main-element">
<h4>Title 1</h4>
<ul>
<li></li>
<li></li>
<li>
<h4>Title2</h4>
</li>
</ul>
</div>
我想在所有h4元素上选择和使用相同的样式,但我也想在第一个元素上添加其他样式。例如,我希望所有h4元素的margin-top和margin-bottom的值为8 px,但对于第一个h4元素,我希望它们的margin-top的值为0。
我尝试过使用:first-child和first-of-type选择器。例如:
.main-element h4 {
color: blue;
}
.main-element h4:first-of-type {
color: red;
}
它将所有元素都着色为红色,而不仅仅是第一个元素。
2条答案
按热度按时间mm5n2pyu1#
first-of-type
对于两个h4
都是真的,因为第二个在<li>
内部,这使得first-of-type
再次成为第一个孩子。考虑将类添加到要设置样式的类中
3phpmpom2#
first-of-type
总是与当前父对象相关,即它意味着“该类型在该容器中的第一次出现”。因此,您的.main-element h4:first-of-type
匹配main-element
的后代的每个h4,并且是其父对象中的第一个h4。如果你只想为父对象的直接子对象设置样式,你可以使用“〉”选择器,比如: