想要实现这样的效果:
第一个想法就是使用display:flex;justify-content: space-between;
所以想要得到效果,一般来说还需要在盒子外面再套一层盒子才行,但是也可以使用margin来实现。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
background-color: gainsboro;
display: flex;
/* justify-content: space-between; */
flex-wrap: wrap;
/* gap: 10px; */
}
.item{
width: 50px;
height: 50px;
background-color: orange;
/* margin: auto; */
border: 2px solid darkslategrey;
box-sizing: border-box;
--n: 5; /* 一行几个 */
--space: calc(100% - var(--n) * 50px); /* 一行减去item的宽度后剩下的间距 */
--leftRight: calc(var(--space) / var(--n) / 2); /* 每个item左右的间距 */
margin: 10px var(--leftRight);
}
</style>
</head>
<body>
<div class="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 class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</body>
</html>