当前位置: 首页 > ops >正文

【自定义指令】(el-table表格内容自动轮播)

// el-table 自动轮播
import { nextTick } from 'vue'; export default {bind(el, binding) {const time = binding.value?.time || 100;let speed = binding.value?.speed || 1;const loop = binding.value?.loop || true;const timeLoop = binding.value?.timeLoop || true;const wrapper = el.querySelector('.el-table__body-wrapper');wrapper.__isExecute__ = false;nextTick(() => {wrapper.__vueAutoScroll__ = () => {if (wrapper.clientHeight >= wrapper.scrollHeight) {return;}clearInterval(wrapper.__vueScrollTimeout__);if (timeLoop && wrapper.__isExecute__) {wrapper.scrollTop = 0;}clearInterval(wrapper.__vueScrollInterval__);wrapper.__vueScrollInterval__ = setInterval(() => {wrapper.__isExecute__ = false;wrapper.scrollTop += speed;if (wrapper.clientHeight + wrapper.scrollTop === wrapper.scrollHeight) {if (loop) wrapper.scrollTop = 0;else {clearInterval(wrapper.__vueScrollInterval__)}wrapper.__isExecute__ = true;if (timeLoop && wrapper.__isExecute__) {clearInterval(wrapper.__vueScrollInterval__)// 如需立即开始请注释以下两段代码clearInterval(wrapper.__vueScrollTimeout__);wrapper.__vueAutoScroll__();}}}, time);};wrapper.addEventListener('mouseenter', () => {clearInterval(wrapper.__vueScrollInterval__)clearInterval(wrapper.__vueScrollTimeout__);});})wrapper.addEventListener('mouseleave', () => {wrapper.__vueAutoScroll__()});},componentUpdated(el) {const wrapper = el.querySelector('.el-table__body-wrapper');nextTick(() => {if (wrapper.__vueAutoScroll__) {wrapper.__vueAutoScroll__();}});},unbind(el) {const wrapper = el.querySelector('.el-table__body-wrapper');clearInterval(wrapper.__vueScrollInterval__);clearInterval(wrapper.__vueScrollTimeout__);wrapper.removeEventListener('mouseenter', () => {clearInterval(wrapper.__vueScrollInterval__)clearInterval(wrapper.__vueScrollTimeout__);});wrapper.removeEventListener('mouseleave', wrapper.__vueAutoScroll__);}
}

使用:

<el-table :data="channelData" v-elTableAutoScroll size="mini" class="mini-space" max-height="121px"style="width: 100%;"><el-table-column prop="name" label="XXX" show-overflow-tooltip> </el-table-column>...</el-table><script>import elTableAutoScrollbar from '@/utils/scroll.js';
export default {name: 'cannelSize',directives: {elTableAutoScroll: elTableAutoScrollbar},</script>
http://www.xdnf.cn/news/4745.html

相关文章:

  • Elastic:什么是 AIOps?
  • [人机交互]设计,原型建立和构造
  • mysql 数据库初体验
  • Cursor+AI辅助编程-优先完成需求工程结构化拆解
  • 【前端分享】CSS实现3种翻页效果类型,附源码!
  • 解决Ceph 14.2.22 Nautilus版本监视器慢操作问题的实践指南
  • 【Touching China】2012-2016
  • 从 CFD 到 DEM:积鼎流体仿真技术拓展与协同互补之路
  • 破解老龄化困局:国家政策扶持与智慧养老实践路径
  • 关于form、自定义Hook、灰度发布、正则表达(只能输入数字和不要空格)
  • 笔试专题(十六)
  • Java线程安全问题深度解析与解决方案
  • <template>标签的用法
  • QT QList容器及行高亮
  • Django进阶:用户认证、REST API与Celery异步任务全解析
  • 搭建以太坊私有链完整指南:从零实现数据存储API
  • 2025年3月青少年机器人技术等级考试(二级)实际操作真题试卷
  • 如何在vite构建的vue项目中从0到1配置postcss-pxtorem
  • 02-GBase 8s 事务型数据库 客户端工具dbaccess
  • 什么是变量提升?
  • WiFi出现感叹号上不了网怎么办 轻松恢复网络
  • Off-Policy策略演员评论家算法SAC详解:python从零实现
  • SpringBoot使用定时线程池ScheduledThreadPoolExecutor
  • 【C++游戏引擎开发】第34篇:C++实现反射
  • 【嵌入式开发-LCD】
  • 【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌
  • C++继承语法讲解
  • 2025最新:3分钟使用Docker快速部署Redis集群
  • 为什么 MySQL 用 B+ 树作为数据的索引,以及在 InnoDB 中数据库如何通过 B+ 树索引来存储数据以及查找数据
  • base64与图片的转换和预览(高阶玩法)