【flex-grow】计算 flex弹性盒子的子元素的宽度大小

计算以下两个子div的宽度大小:

代码如下:

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #div0 {
            width: 400px;
            height: 500px;
            background-color: aqua;
            display: flex;
        }

        #div0 div {
            width: 200px;
            height: 200px;
            background-color: #c01010;
        }
        #div0 div:nth-child(1) {
            flex-basis: 30%;
            flex-grow: 1;
            background-color: blue;
        }

        #div0 div:nth-child(2) {
            flex-basis: 50%;
            flex-grow: 1;
            background-color: rgb(255, 251, 0);
        }
    </style>
</head>

<body>
    <div id="div0">
        <div></div>
        <div></div>
    </div>
</body>

</html>

分析:

对于第一个子元素 div:nth-child(1)

  • 初始宽度为 flex-basis: 30%,即 30% * 400px = 120px。

对于第二个子元素 div:nth-child(2)

  • 初始宽度为 flex-basis: 50%,即 50% * 400px = 200px。

总的剩余空间:

400-120-200=80

因为两个都设置了flex-frow:1,表示会根据剩余空间进行增长

80/2=40 两个平分40

那么第一个子元素的大小为 120+40=160

第二个子元素的大小为200+40=240

因此,根据计算得到,第一个子元素的宽度为约160px,第二个子元素的宽度为约240px。

拓展:

如果一个设置了flex-grow:1 另外一个是flex-grow:2

那么就是80/3=26.67

第一个为120+26.67=146.67

第二个为200+26.67*2=253.34

你学废了嘛?

相关推荐
阿隆_趣编程1 分钟前
为了方便相亲,我用AI写了一款小程序
前端·javascript·微信小程序
EndingCoder13 分钟前
Electron 跨平台兼容性:处理 OS 差异
前端·javascript·electron·前端框架·node.js·chrome devtools
秋田君29 分钟前
Vue3+Node.js 实现大文件上传:断点续传、秒传、分片上传完整教程(含源码)
前端
爱隐身的官人29 分钟前
ctfshow - web - nodejs
前端·nodejs·ctf
zhong liu bin29 分钟前
Vue框架技术详解——项目驱动概念理解【前端】【Vue】
前端·javascript·vue.js·vscode·vue
W-GEO29 分钟前
前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南
前端·安全·xss
2301_8035545232 分钟前
实习项目包装--HTTP 协议和 Web API
前端·网络协议·http
lssjzmn33 分钟前
Spring Web 异步响应实战:从 CompletableFuture 到 ResponseBodyEmitter 的全链路优化
java·前端·后端·springboot·异步·接口优化
这里有鱼汤34 分钟前
上班族没时间炒股?不妨试试这个隔夜超短战法(附:Python量化源码)
前端
n123523541 分钟前
Chrome 插件开发入门指南:从基础到实践
前端·chrome