Skip to content
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>