CSS - 如果两个子 div 相互跟随,则设置它们的样式
CSS - Styling two child divs if they follow each other
我有两个子 div,它们在相互跟随时需要减少边距,但我不知道该怎么做。
我无法更改 field_item
,但我可以使用 jQuery 作为最后的手段。
例如
<body>
<div class="field_item">
<div class="narrow video-block">narrow video-block</div>
</div>
<div class="field_item">
<div class="narrow video-block">narrow video-block</div>
</div>
<body>
这两个 field_item div 之间的边距是 3rem,但是当两个 narrow
子容器相互跟随时,我希望它是 1rem:
这可能吗?
一些伪代码:
IF field_item.narrow is followed by .field_item.wide
THEN margin-bottom is 5rem.
ELSE IF field_item.narrow is followed by .field_item.narrow
THEN margin-bottom is 1rem.
您可以使用 :not(:last-of-type) CSS 选择器将边距应用到除组中最后一个元素之外的所有 .field_item
元素。
.field_item:not(:last-of-type) {
margin-bottom: 1em;
}
根据附加信息更新:
根据更新,我建议重新考虑该方法。鉴于您只提供了极少的特定于您的示例的信息,理解问题的上下文有点困难。但也许你可以考虑重新调整你的 DOM 结构。
如果这不可能,您可以使用类似于以下内容的 jQuery 来遍历 DOM 并在每个后面有两个 .field_item.narrow
项的地方添加一个额外的 class其他.
$(".field_item").each(function(index) {
var thisItem = $(this).children(".video-block").first();
var nextItem = $(this).next(".field_item").children(".video-block").first();
if (thisItem.hasClass("narrow") && nextItem.hasClass("narrow")) {
$(this).addClass("marginSmall");
}
});
.marginSmall {
margin-bottom: 1em;
}
我有两个子 div,它们在相互跟随时需要减少边距,但我不知道该怎么做。
我无法更改 field_item
,但我可以使用 jQuery 作为最后的手段。
例如
<body>
<div class="field_item">
<div class="narrow video-block">narrow video-block</div>
</div>
<div class="field_item">
<div class="narrow video-block">narrow video-block</div>
</div>
<body>
这两个 field_item div 之间的边距是 3rem,但是当两个 narrow
子容器相互跟随时,我希望它是 1rem:
这可能吗?
一些伪代码:
IF field_item.narrow is followed by .field_item.wide
THEN margin-bottom is 5rem.
ELSE IF field_item.narrow is followed by .field_item.narrow
THEN margin-bottom is 1rem.
您可以使用 :not(:last-of-type) CSS 选择器将边距应用到除组中最后一个元素之外的所有 .field_item
元素。
.field_item:not(:last-of-type) {
margin-bottom: 1em;
}
根据附加信息更新:
根据更新,我建议重新考虑该方法。鉴于您只提供了极少的特定于您的示例的信息,理解问题的上下文有点困难。但也许你可以考虑重新调整你的 DOM 结构。
如果这不可能,您可以使用类似于以下内容的 jQuery 来遍历 DOM 并在每个后面有两个 .field_item.narrow
项的地方添加一个额外的 class其他.
$(".field_item").each(function(index) {
var thisItem = $(this).children(".video-block").first();
var nextItem = $(this).next(".field_item").children(".video-block").first();
if (thisItem.hasClass("narrow") && nextItem.hasClass("narrow")) {
$(this).addClass("marginSmall");
}
});
.marginSmall {
margin-bottom: 1em;
}