vue+elementUI的tabs与table表格联动固定与滚动位置
在Vue中使用Element UI的Tabs组件和Table组件时,可以通过监听tabs的切换事件和表格的滚动事件来实现二者联动,固定表头和滚动位置。以下是一个简单的示例:
<template>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="用户管理" name="first">
<el-table
:data="tableData"
style="width: 100%"
height="250"
:header-cell-style="headerCellStyle"
ref="tableRef"
@scroll="handleTableScroll"
>
<!-- 表格列定义 -->
</el-table>
</el-tab-pane>
<el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
<el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
</el-tabs>
</template>
<script>
export default {
data() {
return {
activeName: 'first',
tableData: [], // 表格数据
lastScrollLeft: 0, // 记录上次滚动位置
};
},
methods: {
handleTabClick(tab, event) {
// 当切换到包含表格的tab时,重置滚动位置
if (tab.name === 'first' && this.lastScrollLeft > 0) {
this.$nextTick(() => {
this.$refs.tableRef.bodyWrapper.scrollLeft = this.lastScrollLeft;
});
}
},
handleTableScroll(event) {
// 表格滚动时保存滚动位置
if (this.activeName === 'first') {
this.lastScrollLeft = event.target.scrollLeft;
}
},
headerCellStyle({ column, columnIndex }) {
// 固定表头样式
if (this.activeName === 'first') {
return 'position: sticky; z-index: 1; background-color: #fff;';
}
},
},
};
</script>
在这个示例中,我们使用了el-tabs
组件和el-table
组件。activeName
是绑定到el-tabs
的v-model
,用于记录当前激活的tab。handleTabClick
方法用于在切换到包含表格的tab时重置表格滚动位置。handleTableScroll
方法用于在表格滚动时保存滚动位置。headerCellStyle
方法用于为表格的表头添加固定定位样式,使表头在滚动表格时保持在顶部。
请注意,这个示例假设你已经有了表格的数据源tableData
。实际应用中,你需要根据自己的数据结构和逻辑来填充这部分内容。
评论已关闭