html - 将 CSS 应用于第一个子元素,将 CSS 应用于元素内的最后一个子元素,但如果只有子元素则不适用
问题描述
我正在寻找一种优雅的 SASS 解决方案,将样式应用于第一个子元素,并将不同的样式应用于元素内的最后一个子元素,但如果它是唯一的子元素,则没有样式。
我怎么能做到这一点?
一个例子是:
- 如果元素是 a 中的第一个子元素
div
,则为其赋予margin-right
属性5px
- 如果元素是 a 中的最后一个子元素
div
,则为其赋予margin-left
属性 `5px - 如果元素是 a 中的唯一子元素
div
,则 letmargin-right
和margin-left
be0
。
想象一下,我有以下内容:
<div>
<i>Item 1</i>
<span>Item 2</span>
<i>Item 3</i>
</div>
- 我希望
Item 1
拥有, should be的margin-right
属性。5px
margin-left
0
- 我希望
Item 2
没有任何样式应用于它。 - 我希望
Item 3
拥有, should be的margin-left
属性。5px
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 选择器有点生疏了。
解决方案
对您的 SASS 规则稍作修改就可以得到您想要的结果。尝试以下 SASS 规则。
div {
i {
&:first-of-type {
margin-right: 5px;
}
&:last-child {
margin-left: 5px;
}
}
}
推荐阅读
- kubernetes - 定期将数据 (2-3 GB) 加载到在 Kubernetes 集群上运行的 Apache Ignite 集群的最佳方式
- javascript - 在 chrome 上捕获 js 违规
- angular - 谷歌图表 - 列非常薄
- javascript - 如何使用 Intl.NumberFormat 将小数格式化为整数
- node.js - 查找两个文档的日期差异
- javascript - 从数据库加载预选值以进行选择
- python - Python Plotly 静态图像导出(Orca)获取 html 错误 404
- python - sqlite3.OperationalError:没有这样的列
- javascript - 重命名 Javascript 对象中所有属性名称的最快方法是什么?
- swift - 这是为 CAShapeLayer 设置框架的正确方法吗?