经常会遇到这样的排列布局,要求实现一行三个,显示多行,左对齐,思考片刻决定使用 flex 布局。
最终效果图:
代码如下:
<body> <section > <div >元素</div> <div >元素</div> <div >元素</div> <div >元素</div> <div >元素</div> <div >元素</div> <div >元素</div> </section> </body> <style> .content { width: 100%; display: flex; flex-wrap: wrap; background-color: skyblue; } .item { flex: 0 0 calc((100% - 10px)/3); height: 120px; background-color: pink; /* 间隙为 5px */ margin: 0 5px 5px 0; } .item:nth-child(3n) { /* 去除第 3n 个的 margin-right */ margin-right: 0; } </style>
也可以:
.item { /* flex: 0 0 calc((100% - 10px)/3); */ width: calc((100% - 10px) / 3); height: 120px; background-color: pink; /* 间隙为 5px */ margin: 0 5px 5px 0; }
至此使用 flex 布局完美解决一行三个,显示多行,左对齐的需求。