flex布局下,盒子被挤压时如何解决

flex-shrink属性用于指定flex元素在空间不足时的收缩比例。默认值为1,意味着所有元素按相同比例收缩。当容器宽度不足以容纳所有子元素时,按照flex-shrink比例进行压缩。例如,若四个子元素的宽度比为1:1:3:3,且flex-shrink均为1,则收缩比例仍为1:1:3:3。若其中一个元素的flex-shrink设为0,它将不会收缩,而其他元素会按比例分配剩余空间。
摘要由CSDN通过智能技术生成

flex-shrink

flex-shrink 属性指定了 flex 元素的收缩规则,默认值是1。在flex 元素的默认宽度之和大于容器的宽度时候,元素会发生收缩,其收缩的大小的依据是 flex-shrink 值。

<div style="display:flex; align-items: center; margin:100px;">
  <div style="width: 100px; height:30px; background: gray; "></div>
  <div style="width: 100px; height:30px; background: pink; "></div>
  <div style="width: 300px; height:30px; background: rgb(182, 182, 78); "></div>
  <div style="width: 300px; height:30px; background: rgb(165, 96, 165); "></div>
</div>

 子元素的宽度之和为 100+100+300+300=800px,每个子的默认flex-shrink值是1。

 

 

当父容器被压缩到小于800px的时候,比如压缩到560px时,里面的子元素也会被相应地压缩。各个子元素被压缩掉多少宽度呢?

4个子div的宽度比是 1:1:3:3,4个子元素的默认flex-shrink值都是1,所以flex-shrink比例:1:1:1:1。

(1:1:3:3) x (1:1:1:1) = 1:1:3:3,得每个子元素的被压缩掉的那部分宽度的比例是 1:1:3:3 。

父容器从800px收缩到560px,即总宽度被压缩掉了240px,则每个子元素相应被压缩掉
30px、30px、90px、90px。所以每个子元素的剩余宽度是:

 

示例2

当不想某个子元素在父容器变窄时被压缩,可以使用 flex-shrink:0 ,比如

 

 

4个子div的宽度比是 1:1:3:3,4个子元素的flex-shrink值的比例是:1:1:0:1。

(1:1:3:3) x (1:1:0:1) = 1:1:3:3,得每个子元素的被压缩掉的那部分宽度的比例是 1:1:0:3 。

父容器从800px收缩到560px,即总宽度被压缩掉了240px,则每个子元素相应被压缩掉
48px、48px、0px、144px。所以每个子元素的剩余宽度是:

 最后注意:如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值