先上效果:
代码实现:
利用 "flex: flex-start" + "flex-wrap: wrap;" 做多行对齐;
第1行: 两端对齐;
第n行: 两端对齐;
最后1行: 左对齐;并且 item 间距和其它行的 item 间距相同;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>flex</title>
<style>
#box {
position: relative;
background-color: blueviolet;
width: 1100px;
display: flex;
justify-content: flex-start;
flex-flow: wrap;
.item {
width: calc((100% - 40px) / 4);
height: 100px;
background-color: red;
border: 1px solid black;
margin-right: 10px;
&:nth-child(4n) {
background-color: green;
margin-right: 0;
}
}
}
</style>
</head>
<body>
<!--
测试: "flex: flex-start" + "flex-wrap: wrap;" 做多行对齐;
第1行: 两端对齐;
第n行: 两端对齐;
最后1行: 左对齐;并且 item 间距和其它行的 item 间距相同;
-->
<div id="box">
<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 class="item"></div>
<div class="item"></div>
<div class="item"></div>
<!-- <div class="item"></div> -->
</div>
</body>
</html>
总结:
- 父元素
#box {
display: flex;
flex-flow: wrap;
justify-content: flex-start;
...
}
- 子元素
/* 数字4 的意思是 一行最多要有4个子元素 */
.item {
width: calc((100% - 40px) / 4);
....
&:nth-child(4n) {
margin-right: 0;
....
}
}