【CSS】flex布局中子元素设置宽度失效

先来盘一盘我自己遇到的问题场景,大概如图所示:

 

前提条件:box使用了flex布局,让div1和div2两端对齐,box未设置宽度,其宽度是自适应的,div2的宽度是固定的,div1的宽度理想状态是box的宽度减去div2的固定宽度。

简单来说就是,div2固定宽度,div1宽度自适应占满剩余空间。

问题现状:div1长度没超长的时候,没有问题。但当div1的内容长度超长了,div2设置的宽度失效,会被压缩。

而问题的原因主要在于flex的flex-grow和flex-shrink属性。

先让我们来了解一下这两个属性。

1、flex-grow

默认值是0,表示放大比例,如果存在剩余空间,也不放大。

2、flex-shrink

默认值是1,表示缩小比例,如果空间不足,该项目就会缩小。

在上述场景中,并没有设置这两个属性,那么取的就是默认值。

如果div1内容超长了,想必空间是不够的,这个时候div2的宽度就被缩小了。

解决方案其实也很简单,像我的这个场景,只需要给div2设置 flex-shrink: 0 即可。表示空间不足的情况下,div2也不缩小。

flex-shrink: 0;

更多关于flex的属性,可以参考 阮一峰老师的Flex布局教程

正好遇到了就复盘一下,主要是flex布局有的属性用的比较少,太容易遗忘了。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS Flex布局子元素设置灵活性和对齐方式的属性有多个选项。其,可以使用`flex`属性来定义子项目在剩余空间所占的比例,值为一个非负数。例如,设置`flex: 1;`表示子项目将占据剩余空间的比例为1份。 同时,可以使用`align-self`属性来控制单个子项目在侧轴上的对齐方式。比如,`align-self: flex-start;`将子项目置于容器顶部,而`align-self: flex-end;`将子项目置于容器底部。 此外,还可以使用`order`属性来定义子项目的排列顺序。默认情况下,子项目的`order`值为0,数值越小,排列越靠前。 综上所述,通过使用`flex`属性定义子项目占据剩余空间的比例,使用`align-self`属性控制子项目在侧轴上的对齐方式,以及使用`order`属性定义子项目的排列顺序,可以对CSS Flex布局子元素进行灵活的设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [css flex 布局子元素撑大父元素导致页面布局错乱](https://blog.csdn.net/weixin_45499478/article/details/116809934)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CSS—flex 弹性布局(父/子元素的属性)](https://blog.csdn.net/keket1/article/details/125482491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值