el-tree双向内容滚动
时间: 2023-07-10 21:06:34 浏览: 160
el-select-tree:ElementUI的el-select与el-tree结合
5星 · 资源好评率100%
el-tree 是 Element UI 提供的树形组件,支持单向滚动,但不支持双向滚动。如果需要实现双向滚动,可以考虑使用第三方插件如 vue-virtual-scroller。
下面是使用 vue-virtual-scroller 实现 el-tree 的双向滚动的示例代码:
1. 安装 vue-virtual-scroller 插件
```
npm install vue-virtual-scroller --save
```
2. 在组件中引入 vue-virtual-scroller 和 el-tree
```html
<template>
<div class="wrapper">
<vue-virtual-scroller class="tree-container" :items="items" :item-size="itemSize" :buffer="bufferSize">
<el-tree :data="data" :props="defaultProps"></el-tree>
</vue-virtual-scroller>
</div>
</template>
<script>
import VueVirtualScroller from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
import { ElTree } from 'element-ui'
export default {
components: {
VueVirtualScroller,
ElTree
},
data() {
return {
data: [], // el-tree的数据源
defaultProps: {
children: 'children',
label: 'label'
},
items: [], // vue-virtual-scroller的数据源
itemSize: 30, // 每个树节点的高度
bufferSize: 10 // 缓存的节点数量
}
},
mounted() {
// 获取数据并初始化
this.getData()
this.initVirtualScroller()
},
methods: {
async getData() {
// 获取数据并设置到el-tree的数据源中
const res = await fetchData()
this.data = res.data
},
initVirtualScroller() {
// 设置vue-virtual-scroller的数据源
this.items = this.data
}
}
}
</script>
```
3. 根据需要设置样式
```css
.wrapper {
height: 300px;
overflow-y: scroll;
}
.tree-container {
width: 100%;
height: auto !important;
}
```
需要注意的是,使用 vue-virtual-scroller 可能会影响 el-tree 的一些功能,如展开/收起节点等。需要根据具体情况进行调整。
阅读全文