flex详解
flex: flex-grow flex-shrink flex-basis的组合
flex-grow(grow扩展的意思),默认值为0:
(1)解释:如何分配flex子元素的剩余空间
(2)如果所有项目的flex-grow属性都相同,则它们将等分剩余空间
(3)如何计算:
1) 如果所有项目的flex-grow值大于1,如下, 1+2+3 > 1,,采取如下计算方式
如果主轴长度是600,A(50),B(100),C(150),三个项目对应的flex-grow分别是1,2,3,
剩余空间就是600-50-100-150=300,
那么ABC这三个项目分配到的剩余空间分别是:300*(1/1+2+3), 300(2/1+2+3), 300*(3/1+2+3)
即:50, 100, 150
那个这三个项目最终占据的空间分别是: 50+50, 100+100, 150+150(100, 200, 300)
2)如果所有项目的flex-grow值小于1,基值按照1来进行计算(分母),如下, 0.2+0.3+0.4 < 1,采取如下计算方式
就和上面1)举的例子来说,
那ABC这三个项目分配到的剩余空间是: 300*(0.2/1), 300*(0.3/1), 300(0.4/1)
即: 60, 90, 120
那个这三个项目最终占据的空间分别是: 50+60, 100+90, 150+120(110, 190, 270)
flex-shrink(shrink缩小的意思),默认值为1:
(1)解释:当flex空间不足时,该如何缩小(flex空间指的是本身定义的flex空间)
(2)如何计算:
1) 如果所有项目的flex-shrink值大于1,如下, 1+2+3 > 1,采取如下计算方式
如果主轴长度是600,A(100),B(300),C(500),三个项目对应的flex-shrink分别是1,3,2,
那先计算出总权重值: 100*1 + 300*3 + 500*2 = 2000px
每个项目的权重为: 100*1/2000, 300*3/2000, 500*2/2000(0.05, 0.45, 0.5)
溢出的空间长度是: 100+300+500 - 600 = 300px
那每个项目分别缩小: 300*0.05, 300* 0.45, 300*0.5(15,135,150)
那每个项目最终占据的空间分别是:100-15, 300-135, 500-150(85, 165, 350)
2) 如果所有项目的flex-shrink值小于1,只收缩溢出空间的一部分,即(0.1, 0.3, 0.2),
就和上面1)举的例子来说,
总的溢出空间是: 300*0.1+300*0.3+300*0.2 = 30+90+60 = 180px
由于每个项目的权重不变,
那么每个项目将分别缩小: 180*0.05, 180*0.45, 180*0.5(9, 81, 90)
那每个项目最终占据的空间分别是:100-9, 300-81, 500-90(91, 219, 410)
flex-basis
(1)解释:每个flex子项目占据主轴的空间
(2)可以设置成百分比
flex: 1表示flex: 1 1 0%
参考文献:https://www.zhangxinxu.com/wordpress/2018/10/display-flex-css3-css/#comments
https://www.jb51.net/css/706642.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2018-02-09 修改placeholder的颜色
2018-02-09 js位操作符