flex布局最后一行宽度自适应放大和前面保持一致
方式一
html
<!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>
.container {
display: flex;
flex-wrap: wrap;
gap: 16px;
width: 20vw;
}
.item {
--columns: 4;
/* 每行最多 4 个 */
--gap: 16px;
flex-grow: 1;
flex-basis: calc((100% - (var(--columns) - 1) * var(--gap)) / var(--columns));
min-width: calc((100% - (var(--columns) - 1) * var(--gap)) / var(--columns));
height: 100px;
background: #ccc;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
<br><br>
<hr><br><br>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
<br><br>
<hr><br><br>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
</div>
<br><br>
<hr><br><br>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
</div>
</body>
</html>方式二
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.container {
display: inline-flex;
flex-wrap: wrap;
padding: 16px;
border: 1px solid #ccc;
max-width: 100%; /* 防止超出父容器 */
}
.item {
flex: 1 1 0;
min-width: 100px; /* 可选:防止元素太小 */
padding: 8px;
margin: 4px;
background: #eee;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
<div class="item">D</div>
<div class="item">E</div>
</div>
</body>
</html>