vue3+ts封装自动滚动ts文件

新建scrollCarousel.ts文件,代码如下:

interface CarouselElements {outerContainer: HTMLDivElement;innerContainer: HTMLDivElement;interval: number;
}class ScrollCarousel {private outerContainer: HTMLDivElement;private innerContainer: HTMLDivElement;private scrollHeight: number;private autoScrollInterval: NodeJS.Timer | null;private interval: number;private scrollTop: number;constructor(elements: CarouselElements) {this.outerContainer = elements.outerContainer;this.innerContainer = elements.innerContainer;this.scrollHeight = this.outerContainer.scrollHeight;this.autoScrollInterval = null;this.scrollTop = 0;this.interval = elements.interval;// 绑定事件到此实例this.handleMouseEnter = this.handleMouseEnter.bind(this);this.handleMouseLeave = this.handleMouseLeave.bind(this);// 添加事件监听器this.outerContainer.addEventListener("mouseenter", this.handleMouseEnter);this.outerContainer.addEventListener("mouseleave", this.handleMouseLeave);// 开始滚动this.startAutoScroll();}startAutoScroll() {if (this.autoScrollInterval === null) {this.autoScrollInterval = setInterval(() => {this.scrollNext();}, this.interval);}}stopAutoScroll() {if (this.autoScrollInterval !== null) {clearInterval(this.autoScrollInterval);this.autoScrollInterval = null;}}private scrollNext() {if (this.scrollTop < this.scrollHeight - this.outerContainer.clientHeight) {this.scrollTop += 2;} else {this.scrollTop = 0;this.outerContainer.scrollTop = 0;}this.outerContainer.scrollTop = this.scrollTop;}private handleMouseEnter() {this.stopAutoScroll();}private handleMouseLeave() {this.startAutoScroll(); // Restart with the same interval}public destroyEventListener() {this.scrollTop = 0;this.outerContainer.scrollTop = 0;this.stopAutoScroll();this.outerContainer.removeEventListener("mouseenter", this.handleMouseEnter);this.outerContainer.removeEventListener("mouseleave", this.handleMouseLeave);}
}export default ScrollCarousel;

页面结构如下

<div class="winding-machine-wrap" id="csOuterDiv"><div class="list-wrap" id="csInnerDiv"></div>
</div>

在页面中调用

// 假设你有两个 div 元素作为容器
const xsOuterDiv = document.getElementById("xsOuterDiv") as HTMLDivElement;
const xsInnerDiv = document.getElementById("xsInnerDiv") as HTMLDivElement;
// 创建 ScrollCarousel 实例
if (xsOuterDiv && xsInnerDiv) {xsScrollCarousel = new ScrollCarousel({outerContainer: xsOuterDiv,innerContainer: xsInnerDiv,interval: 60});
}

最后别忘了销毁定时器

// 离开组件清除定时器
onBeforeUnmount(() => {// 清除自动滚动定时器xsScrollCarousel && xsScrollCarousel.destroyEventListener();
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xhs 旋转验证码剖析和协议算法实现

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#…

计算机视觉的职业规划

Hi&#xff0c;大家好。我是茶桁。 今天这节课呢&#xff0c;咱们先不着急讲原理&#xff0c;先来讲讲职业规划的话题。 如果想要直接上手企业级的 AI 项目&#xff0c;可以看看咱们的「AI 人工智能企业项目实战」。 趋势和薪资 首先&#xff0c;先来讲讲就业的趋势。其实学…

JavaWeb——MySQL:DDL

目录 3. DQL:查询 ​编辑3.3 排序查询&#xff08;order by&#xff09; &#xff08;1&#xff09;排序 &#xff08;2&#xff09;多字段排序&#xff1a; &#xff08;3&#xff09;总结&#xff1a; 3. DQL:查询 查询是使用最多、最频繁的操作&#xff0c;因为前面的…

开心汉化轻量级工单与知识库一体化管理系统源码

开心汉化发布&#xff1a;轻量级工单与知识库一体化管理系统源码 我们很高兴地宣布&#xff0c;开心汉化团队现已发布一款轻量级工单与知识库一体化管理系统的汉化源码。该系统不仅功能强大&#xff0c;而且易于部署和管理&#xff0c;适用于各类企业或个人管理大量工单数据的…

微软结束将数据中心置于海底的实验

2016 年&#xff0c;微软 宣布了一项名为"纳蒂克项目"&#xff08;Project Natick&#xff09;的实验。基本而言&#xff0c;该项目旨在了解数据中心能否在海洋水下安装和运行。经过多次较小规模的测试运行后&#xff0c;该公司于 2018 年春季在苏格兰海岸外 117 英尺…

如何避免MySQL的死锁或性能下降

1、按顺序访问数据 确保多个线程或事务在访问多个表或行时&#xff0c;按照相同的顺序进行。这可以避免循环等待和资源竞争&#xff0c;从而降低死锁的风险。 2、避免长时间持有锁 尽量缩短事务的执行时间&#xff0c;避免长时间持有锁。长时间持有锁会增加其他事务等待的时…

密码学及其应用 —— Java中的安全性

1. 简介 Java是一种广泛使用的编程语言&#xff0c;特别是在企业级解决方案中&#xff0c;比如使用J2EE、JavaBeans等技术。在Web开发领域&#xff0c;Java也有其应用&#xff0c;如客户端的applet和服务器端的Servlets/JSP。 1.1 Java的特点 面向对象&#xff1a;Java是一种面…

【个人博客搭建】(26)发布后端webapi项目

1、选择启动的webapi&#xff0c;右击发布 2、选择左下角的“显示所有设置” 在上一页按钮那边是发布文件夹的目录 地址&#xff0c; 现在界面的就是配置的信息&#xff0c; 配置&#xff1a;Debug、Release 目标框架&#xff1a;我们用的net8.0&#xff0c;就是他&#xff…

FPGA学习笔记(5)——硬件调试与使用内置的集成逻辑分析仪(ILA)IP核

如果要对信号进行分析&#xff0c;可以使用外置的逻辑分析仪&#xff0c;但成本较高&#xff0c;对初学者来说没有必要&#xff0c;可以使用Xilinx Vivado内自带的逻辑分析仪IP核对信号进行分析&#xff0c;不过需要占用一定的芯片资源。 本节采用上一节配置的LED灯闪烁代码&a…

学习记录697@数据通信基础之异步通信和同步通信

最近在看计算机网络物理层部分&#xff0c;涉及到异步通信和同步通信&#xff0c;这个和通信知识相关。 异步通信和同步通信都是为了解决时钟同步问题&#xff0c;这个和编程中的同步和异步是不一样的概念。 时钟同步 我的理解是&#xff0c;发送者发送一系列信号&#xff0…

手机定位技术全解析:原理、发展与应用

1. 引言 背景介绍 最近&#xff0c;神仙姐姐刘亦菲主演的电视剧《玫瑰的故事》中的一段情节引发了广泛讨论。剧中&#xff0c;方协文&#xff08;丈夫&#xff09;对玫瑰&#xff08;妻子&#xff09;的控制欲变本加厉&#xff0c;竟然偷偷在她的手机上安装监控软件&#xff…

python笔记3

1.通过乘法多次打印&#xff0c;以及字符串相加的合体打印 xzzz yyyy print(xy) print(x*10)#与一个数为打印多少次 2.设置俩个变量&#xff0c;可以通过下面的方法来判断是否一个元素是否在另一个元素中&#xff0c;返回bool值 xzzz yyyy print(xy) print(x*10)#与一个数为打…

Android app Java层异常捕获方案

背景&#xff1a; 在Android app运行中&#xff0c;有时一些无关紧要的异常出现时希望App 不崩溃&#xff0c;能继续让用户操作&#xff0c;可以有效提升用户体验和增加业务价值。 新流程&#xff1a; 哪些场景需要Catch Crash Config配置信息&#xff1a; 支持从网络上获…

PPT录屏怎么录?PPT录屏,3种方法简单操作

在数字化时代&#xff0c;PPT已经成为我们日常工作、学习和生活中不可或缺的一部分。无论是商务报告、教学课件还是产品展示&#xff0c;PPT都能帮助我们更加生动、直观地传递信息。然而&#xff0c;有时候我们会面临PPT录屏怎么录的问题。这时&#xff0c;一个好的PPT录屏功能…

合同与合规管理:国企数字化转型之路

在全球经济一体化的背景下&#xff0c;国有企业作为国家经济的重要支撑&#xff0c;其稳健的操作和高效的管理备受瞩目。随着市场经济条件的不断演变和法规的日益严格&#xff0c;传统的手动处理合同和合规管理方式已逐步显示出局限性。采纳先进的合同管理系统和合规管理系统从…

【C++11(二)】lambda表达式和可变参数模板

一、可变参数模板 C11的新特性可变参数模板 能够让您创建可以接受 可变参数的函数模板和类模板 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args...args&#xff0c;这个参数包中可以包含0到任意个模板参数。 template <class ...Arg…

「树莓派入门」树莓派基础-无显示屏连接与远程连接

一、无显示屏树莓派的硬件和软件准备 硬件需求 树莓派主板&#xff08;任何型号&#xff09;电源适配器至少8GB容量的SD卡&#xff08;推荐Class 10或UHS-I&#xff09;以太网线或Wi-Fi网络环境 软件需求 操作系统镜像&#xff08;如Raspberry Pi OS&#xff09;烧录工具&a…

SaaS应用程序开发流程【完整指南】

SaaS 市场每天都在经历巨大的增长。随着 SaaS 业务模式在企业中越来越受欢迎&#xff0c;对优秀 SaaS 应用开发公司的需求也日益增加。 2021年全球SAAS市场净值为1437.7亿美元。统计数据显示&#xff0c; 2022年至2028年&#xff0c;市场将继续以25.89%的复合年增长率增长&…

Python XPath超详细教程

1.什么是Xpath 1.概念:XPath(XML Path Language)&#xff1a;XML路径语言&#xff0c;用来确定XML文档中某部分位置的语言 2.如何使用首先我们需要去Python库里进行下载在终端(按住widr然后会有一个输入框在里面输入cmd就会进入终端)然后输入下面的代码就好了 pip install lx…

科普文:贝叶斯过滤器判定垃圾邮件

简介 贝叶斯分类的运作是借着使用标记(一般是字词&#xff0c;有时候是其他)与垃圾邮件、非垃圾邮件的关连&#xff0c;然后搭配贝叶斯推断来计算一封邮件为垃圾邮件的可能性。 贝叶斯垃圾邮件过滤是非常有威力的技术&#xff0c;可以修改自己以符合个别使用者的需要&#xff0…