编者按:为了避免引入 HTML 标签自身的样式,本文未考虑 HTML 语义化的提倡,以使得行文与示例代码更加简洁。这是文章写做须要,而非代码风格示范。css
在开发中咱们常常会遇到关于如何展现列表的问题,例如:html
为了让其看起来更加温馨美观,一般咱们会在每一个列表项上添加 margin-right
和 margin-bottom
属性来隔开它们,而后一行超过容器长度后进行换行前端
那么在各类状况下,如何处理列表项中margin-right
和margin-bottom
,让列表间隔和换行看起来更加天然美观是本篇的重点css3
<div class='container'> <div class='item'>宽度已知,最多放三个</div> <div class='item'>宽度已知,最多放三个</div> <div class='item'>宽度已知,最多放三个</div> ... </div> <style> /* scss code */ .container { .item { margin-right: 30px; margin-bottom: 20px; &:nth-child(3n) { margin-right: 0; } &:nth-last-child(-n+3) { margin-bottom: 0; } } } </style>
<div class='container'> <div class='item'></div> <div class='item'></div> </div> <div class='container'> <div class='item'></div> <div class='item'></div> <div class='item'></div> </div> <div class='container'> <div class='item'></div> </div> <style> /* scss code */ .container { margin-bottom: 20px; &:last-child { margin-bottom: 0; } .item { margin-right: 30px; &:last-child { margin-right: 0; } } } </style>
<div class='container'> <div class='item'>两个能够成一行</div> <div class='item'>两个能够成一行</div> <div class='item'>这三个字</div> <div class='item'>独成一行呀独成一行呀独成一行呀独成</div> <div class='item'>两个才能成一行呀</div> <div class='item'>四个</div> </div> <style> /* scss code */ .container { display: flex; flex-wrap: wrap; justify-content: space-between; /* 能够尝试其余值,但效果仍很差 */ .item { /* margin-right: 30px; 能够不用 m-r,由 flex 来控制左右间距 */ margin-bottom: 20px; } }
参考连接:https://segmentfault.com/q/1010000005882081/a-1020000005894468git
<div class="wrapper"> <div class='container'> <div class='item'>两个才能成一行呀</div> <div class='item'>两个才能成一行呀</div> <div class='item'>这三个字</div> <div class='item'>独成一行呀独成一行呀独成一行呀独</div> <div class='item'>两个才能成一行呀</div> <div class='item'>四个</div> </div> </div> <style> /* scss code */ .wrapper { padding: 10px; border: 2px solid rgb(240, 103, 103); .container { display: flex; flex-wrap: wrap; margin-right: -30px; margin-bottom: -20px; .item { margin-right: 30px; margin-bottom: 20px; } } } </style>
多多利用 css3 属性来帮助咱们更好的布局列表,避免使用 js 控制列表项,作到 css 与 js 解耦,更利于项目的维护github
以上可能未包含全部状况,欢迎提出或者分享其余更好的解决办法segmentfault
文 / Lawler61
Learn and to learn.
Github: https://github.com/lawler61
做者博客: www.freeze61.me编 / 荧声微信
本文由创宇前端做者受权发布,版权属于做者,创宇前端出品。欢迎注明出处转载本文。文章连接:https://knownsec-fed.com/2018...app
想要订阅更多来自知道创宇开发一线的分享,请搜索关注咱们的微信公众号:创宇前端(KnownsecFED)。欢迎留言讨论,咱们会尽量回复。布局
欢迎点赞、收藏、留言评论、转发分享和打赏支持咱们。打赏将被彻底转交给文章做者。
感谢您的阅读。