jquery - CSS - 如果两个子 div 相互跟随,则为它们设置样式
问题描述
我有两个子 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>
narrow
这两个 field_item div 之间的边距是 3rem,但是当两个子容器相互跟随时,我希望它是 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
项目相互跟随的地方添加一个额外的类。
$(".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;
}
推荐阅读
- api-platform.com - 如何从 API 平台项目中删除功能?
- swift - 如何重置 UICollectionVIewCell 的背景颜色
- c# - 验证 JSON 中的数字
- c# - 如何播种具有外键的表,该外键在模型中指定为对象,但在表中作为 guid
- amazon-web-services - 为什么`aws configure`有(无效的)默认值?
- twig - 我在使用 QueryBuilder 显示数据时遇到问题
- jenkins - 尝试通过 rest api 创建一个新工作
- apache-kafka-streams - 我在哪里可以找到 ArrayListSerde?
- android - 更新到 AndroidX 库和 Gradle 3.4.2 后的问题
- symfony - 使用 NotifyPropertyChanged 在可嵌入对象上未检测到任何更改