解决flex布局时子元素height属性失效的问题

对于设置了父元素为flex布局的子元素而言,如果没有设置flex-shrink,那么子元素可能会被它的兄弟元素所挤压,是的子元素的高度失效。

// 采用tailwindcss写法
<div class="flex flex-col overflow-scroll">
    <div class="Title w-full h-12 bg-red-400">Title</div>
    <div class="Nav w-full h-12 bg-gray-400">Nav</div>
    <div class="Breadcumbs w-fulll h-12 bg-blue-400">首页/家用涂料</div>
    <div>多个列表</div>
</div>

上面是一个父盒子,设置了flex属性表示它是一个flex容器。内部装了三个子盒子,均设置了高度,下面则是多个列表项。
如果列表项的数目足够多,将页面撑满后会使得上面三个子盒子的高度失效,变成跟随子盒子内文字高度。
在这里插入图片描述

子元素heigth属性失效,是因为被flex-grow影响了。
flex-grow属性定义了项目的放大比例,默认为1,即如果空间较大,该项目将放大。
如果所有项目的flex-grow属性都为1,当空间较大时,都将等比例放大。如果一个项目的flex-gorw属性为0,其他项目都为1,则空间较大时,前者不放大。
负值对该属性无效。

拓展知识

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。

综上得出解决办法:本项目中给想要不受影响的子元素设置flex-grow:0;

<div class="flex flex-col overflow-scroll">
    <div class="Title flex-shrink-0 w-full h-12 bg-red-400">Title</div>
    <div class="Nav flex-shrink-0 w-full h-12 bg-gray-400">Nav</div>
    <div class="Breadcumbs flex-shrink-0 w-fulll h-12 bg-blue-400">首页/家用涂料</div>
    <div>多个列表</div>
</div>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值