【发布时间】:2020-04-08 21:46:20
【问题描述】:
我正在寻找一种优雅的 SASS 解决方案,将样式应用于第一个子元素,并将不同的样式应用于元素内的最后一个子元素,但如果它是唯一的子元素,则没有样式。
我怎样才能做到这一点?
一个例子是:
- 如果元素是
div中的第一个子元素,则为其赋予margin-right属性5px - 如果元素是
div中的最后一个子元素,则为其指定margin-left属性`5px - 如果元素是
div中的唯一子元素,则让margin-right和margin-left成为0。
想象一下我有以下情况:
<div>
<i>Item 1</i>
<span>Item 2</span>
<i>Item 3</i>
</div>
- 我希望
Item 1具有5px的margin-right属性,margin-left应该是0。 - 我希望
Item 2没有应用任何样式。 - 我希望
Item 3具有5px的margin-left属性,margin-right应该是0。
如果我有这个例子:
<div>
<span>Item</span>
</div>
- 我希望
Item没有应用任何样式
我尝试过这样的事情:
div {
i {
&:first-child {
margin-right: 5px;
}
&:last-child {
margin-left: 5px;
}
}
}
但如果我有这种情况,这不起作用:
<div>
<i>Item 1</i>
<span>Item 2</span>
</div>
因为Item 1 将margin-right 和margin-left 属性设置为5px,而我实际上想要margin-right: 5px; margin-left: 0;。
关于如何解决这个问题的任何想法?我的 CSS 选择器有点生疏了。
【问题讨论】:
-
你能检查两次你的最后一个例子吗? Item1 不能使用给定的代码应用左边距。
标签: html css sass css-selectors