我有一组div,像这样
<div class="row header"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
<!-- add spacing here by adding margin to the row above -->
<div class="row header"></div>
<div class="row"></div>
<div class="row"></div>
由于我无法更改标记,我想知道是否可以在.row
和.row.header
之间添加空格而不对其他div进行任何更改。理想情况下,我需要将margin-bottom
添加到.row
之前的每个.row.header
。
在没有添加额外的类和黑客的情况下,CSS是否可以实现?
答案 0 :(得分:1)
您可以使用adjacent sibling selector:
.row + .row.header {
margin-top: 20px;
}
这只会为.row.header
元素之后的.row
元素添加上边距,确保第一个.row.header
元素不受影响。
答案 1 :(得分:1)
正如本回答https://stackoverflow.com/a/1817801/2894798所示,css中没有兄弟选择器,我建议将余量添加到.row.header
.row + .row.header{
margin-top:20px;
}
答案 2 :(得分:0)
使用row
和header
类为div添加上边距会更容易
.row.header {
margin-top: 5px;
}
答案 3 :(得分:0)
If you want apply margin only where is the comment is written you can add css for that as follows
div.row:nth-of-type(4) {
margin-bottom: 20px;
}
but if you want add margin to every 3'd div after .header, you need to apply css as follows
div.row:nth-of-type(4n) {
margin-bottom: 20px;
}
希望这将满足您的要求。
答案 4 :(得分:0)
如果:not()
是其父级的第一个孩子,您也可以使用.row.header
选择器。对于more info.
.row.header:not(:first-child) {
margin-top: 10px;
}