el-table实现当内容过多时,el-table显示滚动条,页面不显示滚动条

9,264次阅读
没有评论

共计 1304 个字符,预计需要花费 4 分钟才能阅读完成。

估计有不少小伙伴在开发公司的 ERP 使用 el-table 都会遇到这么一个问题,就是产品经理提出,页面不出现滚动条,因为不美观。但是当 el-table 内容过多,超过页面的宽度时候,页面就会有滚动条。那应该如何解决呢? 能不能让滚动条出现在 el-table 的容器中,而不是出现在页面上呢?

实现方案就是 resize 时间 结合 el-table 的 max-height 属性 然后根据页面大小实现自适应

定义 auto-height 指令


export default {
	componentUpdate(el,binding,vnode) {
		const self = vnode.context;
		if(!self || typeof self[binding.arg] === 'undefined' || self.autoHeightResizeListener) return
		self.autoHeightResizeListener = () => {
			let top = el.offsetTop;
			let cur = el.offsetParent;
			while (cur) {
				top += cur.offsetTop;
				cur = cur.offsetParent;
			}
			const h = (window.innerHeight-top) + binding.value;
			self[binding.arg] = Math.max(h,100);
		}
		window.addEventListener('resize', self.autoHeightResizeListener,false);

		setTimeout(self.autoHeightResizeListener,50)
	}
	
	unbind(el,binding,vnode) {
		const self = vnode.context;
		if(self && self.autoHeightResizeListener) {
			window.removeEventListener('resize',self.autoHeightResizeListener,false)
			self.autoHeightResizeListener = null;
		}
	}

全局注册


import autoHeight from './auto-height.js'

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

案例使用

el-table
	ref='table'
	v-auto-height:tableHeight='-50'  
	:max-height='height'>  
/el-table>	


data(){
	return {
		height:0, 
	}
}

代码解释:

  • v-auto-height 指令作用:用于监听窗口的 resize 时间,并根据窗口大小动态调整表格高度,确保表格最终占据的可用空间
  • v-auto-height:tableHeight=‘-50’表示将 tableHeight 属性作为目标属性,并将 -50 作为初始值
  • tableHeight 用于存储表格的最大高度,但会在 autoHeightResize 指令中进行动态计算

原文地址: el-table 实现当内容过多时,el-table 显示滚动条,页面不显示滚动条

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-11-03发表,共计1304字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)