flex: 1 是哪些属性的缩写?

flex:1是哪些属性的缩写?

flex:1 是 flex-grow: 1, flex-shrink: 1,flex-basis: 0% 的缩写;

解释下flex-grow

flex-grow是将剩余的空间,根据flex-grow的值平分,然后加到flex-basis上

javascript 复制代码
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>flex-grow</title>
  </head>
  <body>
    <p>内容的宽度是500px,flex item的flex-basic是60px。</p>
    <p>A、B 为 flex-grow:1。C和D为 flex-grow:4</p>
    <div id="content">
      <div class="box" style="background-color: red">A</div>
      <div class="box" style="background-color: lightblue">B</div>
      <div class="box1" style="background-color: yellow">C</div>
      <div class="box1" style="background-color: brown">D</div>
    </div>
  </body>
</html>

上述代码 的flex-basis加起来是240px,父容器分完以后剩下260px,ABCD的flex-grow加起来10,那么每一份是26px,最终AB是60px + 26px = 86px,CD是60px + 26px * 4 = 164px。
是不是特别像老爷子突然噶了留下500块钱的遗产,兄弟4个来分,老大和老二说"我要60块钱,如果有多的可以再给我来一份",老三和老四说"我们也要60块钱,如果有多的我们要四份"。最终老大和老二分到86,老三老四分到164,大家还都挺满意

解释下flex-shrink

javascript 复制代码
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>flex-shrink</title>
    <style>
      #content {
        display: flex;
        width: 500px;
      }
      .box {
        flex-shrink: 1;
      }
      .box1 {
        flex-shrink: 4;
      }
    </style>
  </head>
  <body>
    <p>内容的宽度是500px,flex item的flex-basic总和是1000px。</p>
    <div id="content">
      <div class="box" style="background-color: red; flex-basis: 100px">A</div>
      <div class="box" style="background-color: lightblue; flex-basis: 200px">B</div>
      <div class="box1" style="background-color: yellow; flex-basis: 300px">C</div>
      <div class="box1" style="background-color: brown; flex-basis: 400px">D</div>
    </div>
  </body>
</html>

上面例子

A的flex-basis 是100px, flex-shrink 是 1

B的flex-basis 是200px, flex-shrink 是 1

C的flex-basis 是300px, flex-shrink 是 4

D的flex-basis 是500px, flex-shrink 是 4

要平分的容量 NT = 100 + 200 + 300 + 400 - 500 = 500

最终A的宽度 = 100 - 100 * 1 / (100 * 1 + 200 * 1 + 300 * 4 + 400 * 4) * NT =

83.87096774193549

B的宽度 = 200 - 200 * 1 / (100 * 1 + 200 * 1 + 300 * 4 + 400 * 4) * NT = 167.74193548387098

C的宽度 = 300 - 300 * 4 / (100 * 1 + 200 * 1 + 300 * 4 + 400 * 4) * NT = 106.45161290322582

D的宽度 = 400 - 400 * 4 / (100 * 1 + 200 * 1 + 300 * 4 + 400 * 4) * NT = 141.93548387096774

相关推荐
子兮曰26 分钟前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面37 分钟前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方1 小时前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结1 小时前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言2 小时前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒2 小时前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机2 小时前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生
泯泷3 小时前
手搓JSVM第 12 篇:完整最小 JSVM 实现与源码设计复盘
前端·javascript·前端框架
默_笙4 小时前
🍔 给 AI 发一张结构化表格(下):从"自由发挥"到"按格填空"的输出驯服指南
前端·javascript
泯泷4 小时前
手搓JSVM第 11 篇:打包、模块与 CLI:把 VM 产物变成可运行文件
前端·javascript·前端框架