【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;
}
相关推荐
nujnewnehc3 小时前
ps, ai, ae插件都可以用html和js开发了
前端·javascript
Jagger_7 小时前
整洁架构三连问:是什么,怎么做,为什么要用
前端
一个处女座的程序猿O(∩_∩)O7 小时前
React 完全入门指南:从基础概念到组件协作
前端·react.js·前端框架
前端摸鱼匠7 小时前
Vue 3 的defineEmits编译器宏:详解<script setup>中defineEmits的使用
前端·javascript·vue.js·前端框架·ecmascript
里欧跑得慢8 小时前
Flutter 测试全攻略:从单元测试到集成测试的完整实践
前端·css·flutter·web
Jagger_8 小时前
前端整洁架构详解
前端
徐小夕8 小时前
我花一天时间Vibe Coding的开源AI工具,一键检测你的电脑能跑哪些AI大模型
前端·javascript·github
英俊潇洒美少年8 小时前
Vue3 企业级封装:useEventListener + 终极版 BaseEcharts 组件
前端·javascript·vue.js
嵌入式×边缘AI:打怪升级日志8 小时前
使用JsonRPC实现前后台
前端·后端
小码哥_常9 小时前
深度剖析:为什么Android选择了Binder
前端