我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue.js el-table虚拟滚动效果怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue.js el-table虚拟滚动效果怎么实现

今天小编给大家分享一下vue.js el-table虚拟滚动效果怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

前言

基于Element-UI的Table 组件开发的虚拟滚动组件,支持动态高度,解决数据量大时滚动卡顿的问题

实例代码

<template>  <div    ref="listWrap"        @scroll="scrollListener"  >    <div ref="list">      <el-table        @select="select"        @select-all="selectAll"                :data="showList"        ref="scrollTable"      >        <slot></slot>      </el-table>    </div>  </div></template><script lang="ts">import { ref, onMounted, computed, watch, defineComponent, nextTick } from 'vue'interface IProps {  start: number  end: number  height: number  itemHeight: number  rowKey: string  // eslint-disable-next-line @typescript-eslint/no-explicit-any  initList: any[]}export default defineComponent({  name: 'Vue3VitualTable',  props: ['start', 'end', 'height', 'itemHeight', 'initList', 'rowKey'],  emits: ['handleSelect'],  setup(props: IProps, { emit }) {    // 表格    const listWrap = ref()    const list = ref()    const scrollTable = ref()    const start = ref(props.start)    const end = ref(props.end)    const isAllSelected = ref(false)    // eslint-disable-next-line @typescript-eslint/no-explicit-any    const selections = ref([] as any[])    // 可视区列表    const showList = computed(() => {      return props.initList.slice(start.value, end.value)    })    // 数据长度    const length = computed(() => {      return props.initList.length    })    // 滚动    const scrollListener = () => {      // 获取滚动高度      const scrollTop = listWrap.value.scrollTop      // 开始的数组索引      start.value = Math.floor(scrollTop / props.itemHeight)      // 结束索引      end.value = start.value + 10      list.value.style.transform = `translateY(${start.value * 65}px)` // 对列表项y轴偏移      nextTick(() => {        selections.value.forEach((ele) => {          scrollTable.value.toggleRowSelection(ele, true)        })      })    }    watch(length, (val) => {      if (val > 10) {        listWrap.value.style.height = props.itemHeight * 10 + 'px'      } else {        listWrap.value.style.height = props.itemHeight * val + 57 + 'px'      }    })    // eslint-disable-next-line @typescript-eslint/no-explicit-any    const handleSelect = (val: any) => {      if (!isAllSelected.value) {        isAllSelected.value = scrollTable.value.store.states.isAllSelected.value      }      console.log('store.states.isAllSelected', scrollTable.value.store.states.isAllSelected.value)      emit('handleSelect', val)    }    // eslint-disable-next-line @typescript-eslint/no-explicit-any    const select = (val: any) => {      if (val.length < props.initList.length) {        isAllSelected.value = false      } else {        isAllSelected.value = true      }      selections.value = val      emit('handleSelect', selections.value)      console.log('select', val)    }    // eslint-disable-next-line @typescript-eslint/no-explicit-any    const selectAll = (val: any) => {      if (val.length) {        selections.value = props.initList        isAllSelected.value = true      } else {        selections.value = []        isAllSelected.value = false      }      emit('handleSelect', selections.value)      console.log('selectAll', val)    }    onMounted(() => {      console.log('onMounted')    })    return {      listWrap,      list,      scrollTable,      scrollListener,      showList,      length,      handleSelect,      selections,      select,      selectAll,    }  },})</script>

vue.js el-table虚拟滚动效果怎么实现

以上就是“vue.js el-table虚拟滚动效果怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue.js el-table虚拟滚动效果怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue.js el-table虚拟滚动效果怎么实现

今天小编给大家分享一下vue.js el-table虚拟滚动效果怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言基
2023-07-04

vue.js el-table虚拟滚动完整实例代码

这篇文章主要给大家介绍了关于el-table虚拟滚动的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用vue.js具有一定的参考学习价值,需要的朋友可以参考下
2022-12-29

vue怎么实现虚拟滚动

小编给大家分享一下vue怎么实现虚拟滚动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言移动端网页的日常开发中,偶尔会包含一些渲染长列表的场景.比如某旅游网站需
2023-06-20

Selenium怎么实现页面虚拟滚动和无限滚动

使用Selenium实现页面虚拟滚动:虚拟滚动是指页面上的元素随着用户的滚动动态加载。在Selenium中实现页面虚拟滚动可以通过以下步骤:使用Selenium打开目标网页利用Selenium的滚动方法(如execute_script)
Selenium怎么实现页面虚拟滚动和无限滚动
2024-05-14

CSS怎么实现滚动阴影效果

这篇文章主要为大家展示了CSS怎么实现滚动阴影效果,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“CSS怎么实现滚动阴影效果”这篇文章吧。css是什么意思css是一种用来表现HTML或XML等文件样
2023-06-06

JavaScript怎么实现长图滚动效果

小编给大家分享一下JavaScript怎么实现长图滚动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器
2023-06-14

jquery数字滚动效果怎么实现

您可以使用jQuery的.animate()方法来实现数字滚动效果。首先,您需要一个HTML元素来显示数字。例如,一个div元素:```html0
2023-08-09

python数字滚动效果怎么实现

要实现数字滚动效果,可以使用Python的Tkinter库来创建一个简单的窗口应用程序。以下是一个示例代码,演示如何实现数字滚动效果:import tkinter as tkclass NumberRollingApp:def __ini
python数字滚动效果怎么实现
2024-03-01

css如何实现虚线边框滚动效果

这篇文章将为大家详细讲解有关css如何实现虚线边框滚动效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基本HTML

测试测试

Easy-way
2023-06-08

Angular怎么实现表格自滚动效果

这篇文章主要为大家分析了Angular怎么实现表格自滚动效果的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Angular怎么实现表格自滚动效果”的知识吧。表
2023-06-26

怎么用vue实现无缝滚动效果

今天小编给大家分享一下怎么用vue实现无缝滚动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装NPMnpm insta
2023-07-04

vue怎么实现3D切换滚动效果

本篇内容介绍了“vue怎么实现3D切换滚动效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这个是最终的一个效果,点击左右小箭头,实现滚动效
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录