【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;
}
相关推荐
一棵白菜几秒前
Iterm2 终端安装(带语法提示)
前端
不想说话的麋鹿几秒前
《NestJS 实战:RBAC 系统管理模块开发 (三)》:角色权限分配与数据一致性
前端·后端·node.js
满分观察网友z几秒前
Vue Router 导航解密:replace 还是 push?
前端
三年三月几秒前
019-各种灯光和常用helper(一)
前端·three.js
恋猫de小郭19 分钟前
Flutter 小技巧之:实现 iOS 26 的 “液态玻璃”
android·前端·flutter
糖墨夕23 分钟前
Trae还能将Figma 设计稿转化为前端代码
前端·trae
程序猿小D24 分钟前
第26节 Node.js 事件
服务器·前端·javascript·node.js·编辑器·ecmascript·vim
天天打码25 分钟前
Bootstrap Table开源的企业级数据表格集成
前端·开源·bootstrap
Allen Bright27 分钟前
【CSS-8】深入理解CSS选择器权重:掌握样式优先级的关键
前端·css
hnlucky29 分钟前
安装vue的教程——Windows Node.js Vue项目搭建
前端·javascript·vue.js·windows·node.js