【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;
}
相关推荐
天人合一peng2 小时前
Unity中button 和toggle监听事件函数有无参数
前端·unity·游戏引擎
方也_arkling2 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
毕设源码-朱学姐3 小时前
【开题答辩全过程】以 基于web教师继续教育系统的设计与实现为例,包含答辩的问题和答案
前端
web打印社区3 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
RFCEO3 小时前
前端编程 课程十三、:CSS核心基础1:CSS选择器
前端·css·css基础选择器详细教程·css类选择器使用方法·css类选择器命名规范·css后代选择器·精准选中嵌套元素
Amumu121383 小时前
Vuex介绍
前端·javascript·vue.js
We་ct3 小时前
LeetCode 54. 螺旋矩阵:两种解法吃透顺时针遍历逻辑
前端·算法·leetcode·矩阵·typescript
2601_949480064 小时前
【无标题】
开发语言·前端·javascript
css趣多多4 小时前
Vue过滤器
前端·javascript·vue.js
理人综艺好会5 小时前
Web学习之用户认证
前端·学习