css flex 子元素溢出时,父元素被撑开解决方案

当父元素使用flex: 1;自适应填满时,子元素内容溢出,父元素内容撑大,导致页面显示问题,或设置了overflow 为scroll 的元素没出现滚动条等问题

解决方案:

1.如果是横向排列,flex: 1;的元素加上width: 0; 此时会限制自适应的父元素不会溢出。

2.同上,如果是纵向排列,flex: 1;的元素是高度铺满的,那就加上height: 0; 则元素高度自适应的同事,高度不会被撑大。

3.无论多少层子元素,只要不想给限制的宽高,想让元素flex:1;自适应宽高,都一层层给flex为1时的元素 宽或高 为0限制下去。可以用于解决子元素溢出问题。父元素不会撑大后,给想出现scroll的元素这只滚动,则滚动条恢复正常。

.box{
    display: flex;
}

// 没有给宽度的元素
.aside{}

// 宽度自适应的元素
.main{
    width: 0; // 加上这个,该元素会自适应的同时,不会被main的子元素撑大宽度
    flex: 1;
    overflow-x: scroll;  // 由于不会被撑大,所以可以横向滚动
}



/** 或 */

.box{
    display: flex;
    flex-direction: column;

}

// 没有给高度的元素
.top{}

// 高度自适应的元素
.main{
    height: 0;  // 加上这个,该元素会自适应的同时,不会被main的子元素撑出高度
    flex: 1;
    overflow-y: scroll;  // 由于不会被撑高,所以可以竖向滚动
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值