【CSS】flex弹性盒保持均分

通过Flex布局可以将容器均分,给每个小容器设置相同的flex-grow即可。

javascript 复制代码
<!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 {
      width: 100%;
      height: 100vh;
      display: flex;
    }

    .item {
      flex-grow: 1;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="item" style="background-color: antiquewhite;"></div>
    <div class="item" style="background-color: skyblue;"></div>
    <div class="item" style="background-color: #bfd;"></div>
  </div>
</body>

</html>

flex-grow: 1 表示子容器占父容器所有子容器数量的 n分之1。

javascript 复制代码
.item {
  flex-grow: 1;
}
.item1 {
  flex-grow: 2;
}

<div class="container">
  <div class="item" style="background-color: antiquewhite;"></div>
  <div class="item" style="background-color: skyblue;"></div>
  <div class="item1" style="background-color: #bfd;"></div>
</div>

上述代码将最后一个item的flex-grow设置为2,所以该子容器占了总份数4(1+1+2)的2份,即一半宽度。

但是此时会有隐患,单独设置 flex-grow:1 表示在当前元素宽度基础上加上份数占比的宽度

javascript 复制代码
<!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 {
      width: 100%;
      height: 100vh;
      display: flex;
    }

    .item {
      flex-grow: 1;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="item" style="background-color: antiquewhite;">千山同一月,万户尽皆春。千江有水千江月,万里无云万里天。</div>
    <div class="item" style="background-color: skyblue;"></div>
    <div class="item" style="background-color: #bfd;"></div>
  </div>
</body>

</html>

效果如下,第一个子容器在基础宽度之上,又加上了均分的宽度。

需要增加属性,flex-basis:0,即忽略子容器的基础宽度,默认值为auto。

添加此代码后,效果与预期一致:

javascript 复制代码
.item {
  flex-grow: 1;
  flex-basis: 0;
}

也可以通过复合属性flex实现简写:

第一个参数表示所占份数;

第二个参数表示收缩比例;

第三个参数表示基础宽度;

javascript 复制代码
.item {
  flex: 1 0 0;
}
相关推荐
y***548810 分钟前
React依赖
前端·react.js·前端框架
2***B44910 分钟前
React测试
前端·react.js·前端框架
5***o50017 分钟前
React自动化测试
前端·react.js·前端框架
T***u33318 分钟前
React部署
前端·react.js·前端框架
Jing_Rainbow22 分钟前
【AI-7 全栈-2 /Lesson16(2025-11-01)】构建一个基于 AIGC 的 Logo 生成 Bot:从前端到后端的完整技术指南 🎨
前端·人工智能·后端
神秘的猪头31 分钟前
🧱 深入理解栈(Stack):原理、实现与实战应用
前端·javascript·面试
用户29654127591732 分钟前
JSAPIThree UI 控件学习笔记:用内置控件提升交互
前端
明教教主张5G32 分钟前
Vue响应式原理(13)-ref实现原理解析
前端·vue.js
StockPP38 分钟前
印度尼西亚股票多时间框架K线数据可视化页面
前端·javascript·后端
kungggyoyoyo1 小时前
TRAE中国版SOLO模式上线!我用它从0到1开发了一款AI小说编辑器
前端·vue.js·trae