Vue3 自定义指令让元素自适应高度,el-table在可视区域内滚起来
在Vue 3中,如果你想要创建一个自适应高度的元素,并且确保el-table
在可视区域内滚动,你可以使用自定义指令来监听窗口的尺寸变化,并相应地设置元素的高度。以下是一个简单的自定义指令示例:
// 在你的 Vue 组件中
import { DirectiveBinding } from 'vue';
export const autoHeight = {
mounted(el: HTMLElement, binding: DirectiveBinding) {
const handleResize = () => {
const viewportHeight = window.innerHeight;
const headerHeight = document.querySelector('.your-header-selector')?.clientHeight || 0;
el.style.height = `calc(100vh - ${headerHeight}px)`;
};
handleResize();
window.addEventListener('resize', handleResize);
// 清理函数,移除事件监听器
return () => window.removeEventListener('resize', handleResize);
}
};
// 在你的 Vue 应用中全局注册这个指令
app.directive('auto-height', autoHeight);
// 然后在模板中使用这个指令
<template>
<div v-auto-height>
<!-- 这里是你的 el-table 组件 -->
<el-table>
<!-- 表格内容 -->
</el-table>
</div>
</template>
在这个自定义指令中,我们监听窗口的resize
事件,并计算出一个新的高度,然后将这个高度应用到绑定了指令的元素上。这样,无论el-table
的内容如何长,它都会在可视区域内滚动,而不会超出绑定元素的高度。
评论已关闭