vue3 element-plus flex布局 el-table表格高度自适应(设置百分比高度失效),超出显示滚动条 大屏

问题:子元素百分比高度失效

原因分析:

子元素设置百分比高度是基于父容器的显式高度计算的。

而在 Flex 布局中,父容器通过 flex: 1; 动态分配高度时,其高度属于隐式高度。(可以理解为父容器高度此时受子元素影响)

此时,子元素的百分比高度将因无法获取确定的父级高度参考值而失效,导致子元素高度回退为内容高度即子元素高度会由其内容决定。若子元素内容过长,就会撑开父容器高度,进而破坏页面整体布局。

 解决方法:

<div style="display: flex;flex-direction: column;height: 100%;width: 100%;">
    <div class="table_container" style="flex: 1;position: relative;">
        <el-table :data="xxx" border style="position:absolute;height: 100%;">
        </el-table>
    </div>
</div>

重点:

1. 在 el-table 外套一个 表格外部容器div。

2. 保证 el-table 外的每一层的高度都是 100% 或者 flex: 1 。(总之就是要确认表格外的每一层高度都是正确占满的,可以先把 el-table 注释掉,按f12一层一层去检查)

3.  !!子绝父相 !! 这个是实现的关键,就是 子元素设置position:absolute; 父元素设置position: relative;

子元素绝对定位能够脱离文档流,避免影响父容器的布局和尺寸计算。此时,子元素就可以获取到确定的父级高度参考值,使得百分比高度生效。

子元素还需设置 overflow: auto; 实现内容超出时自动显示滚动条的效果。

(所以在这里就是 el-table 样式设置为 position:absolute;height: 100%;  表格外部容器 样式设置为 flex: 1;position: relative; 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值