【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;
}
相关推荐
风骏时光牛马2 小时前
AI多模块协同自动化工作流
前端
zhangminghuan2 小时前
前端面试应对技巧
前端·面试·职场和发展
计算机魔术师2 小时前
潜伏14年的PHP致命洞,AI跑两天就交卷了
前端
IT_陈寒2 小时前
Vue的这个响应式陷阱我居然现在才发现
前端·人工智能·后端
Python自动化直播3 小时前
智能脚本批量管理拆开看:导入、导出、重写、试听
前端·python·ai·秒播
开开心心就好4 小时前
发票信息录入太麻烦?离线工具一键转表格
运维·服务器·前端·pdf·ocr·maven·intellij-idea
এ慕ོ冬℘゜4 小时前
ES Promise.all/ Promise.race
前端·javascript·elasticsearch
喜欢打篮球的普通人5 小时前
LLVM 前端与优化层:Clang 如何把 C 代码变成 IR
c语言·前端·状态模式
大文说跨境5 小时前
亚马逊多店铺用过多款指纹浏览器,说点长期用的实际感受
前端·网络