element table max-height问题

3 篇文章 0 订阅

第一步:utils目录下创建一个文件为directive,新建auto-height.js文件,

export default {

componentUpdated(el, binding, vnode) {

const ctx = vnode.context;

if (!ctx || typeof ctx[binding.arg] === 'undefined' || ctx.autoHeightResizeListenner) return;

 

ctx.autoHeightResizeListenner = () => {

let top = el.offsetTop;

let cur = el.offsetParent;

while(cur !== null) {

top += cur.offsetTop;

cur = cur.offsetParent;

}

const h = (window.innerHeight - top) + binding.value;

ctx[binding.arg] = Math.max(h, 100 );

};

window.addEventListener('resize', ctx.autoHeightResizeListener, false);

setTimeout(ctx.autoHeightResizeListenner, 50);

},

unbind(el, binding, vnode){

const ctx = vnode.context;

if(ctx && ctx.autoHeightResizeListener) {

window.removeEventListener('resize', ctx.autoHeightResizeListener, false);

ctx.autoHeightResizeListener = null;

}

},

};

全局配置 在main.js中导入 auto-height.js文件

import autoHeight from './utils/directive/auto-height';

Vue.directive('auto-height',autoHeight)

第三步:组件中需要的标签添加两个属性 v-auto-height:maxHeight = ‘-10’ :max-height=“maxHeight”

maxHeight 可以随便在data定义一个值

<el-table   v-auto-height:maxHeight = '-10' :max-height="maxHeight"></el-table>


export default {
    data() {
        return {
			maxHeight:'500'  //maxHeight  可以随便在data定义一个值
		}
        }

转载自用
出处 https://blog.csdn.net/m13302979400/article/details/88538041

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Element UI中,我们可以使用el-table组件来实现表格的展示,同时可以通过设置max-height属性来控制表格的最大高度。在表格下方添加分页组件时,可以通过计算表格和分页组件的高度来实现自适应布局。具体步骤如下: 1. 使用CSS的flex布局将表格和分页组件的容器排列在一起,设置flex-direction为column,使其垂直方向排列。 2. 将表格的容器设置为flex:1,使其占据剩余空间。 3. 设置表格的max-height属性,限制其高度。 4. 给分页组件的容器设置一个固定的高度,使其在表格高度不足时能够自适应。 下面是示例代码: ```html <template> <div class="table-container"> <el-table :data="tableData" style="width: 100%;" :max-height="tableMaxHeight"> <!-- 表格内容 --> </el-table> <div class="pagination-container"> <el-pagination :total="total" :page-size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" layout="total, sizes, prev, pager, next, jumper"> </el-pagination> </div> </div> </template> <script> export default { data() { return { tableData: [], // 表格数据 pageSize: 10, // 每页显示的条目数 total: 0, // 总条目数 tableMaxHeight: 0 // 表格最大高度 } }, mounted() { // 计算表格最大高度 this.tableMaxHeight = this.$el.offsetHeight - this.$refs.pagination.$el.offsetHeight - 50; // 50为表格和分页组件之间的间距 }, methods: { // 分页相关方法 handleSizeChange(val) { this.pageSize = val; this.getTableData(); }, handleCurrentChange(val) { this.currentPage = val; this.getTableData(); }, // 获取表格数据 getTableData() { // ... } } } </script> <style> .table-container { display: flex; flex-direction: column; } .el-table__body-wrapper { flex: 1; } .pagination-container { height: 50px; } </style> ``` 注意:以上代码只是一个示例,具体实现要根据实际情况进行调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值