封装js方法实现无缝循环滚动效果

news/2024/10/20 19:00:30/

如下图,又遇到了无缝循环滚动这个需求

请添加图片描述
突然想到我之前有分享过一篇关于这个的文章https://blog.csdn.net/chuenst/article/details/137125377,果断打开csdn准备cv

在这里插入图片描述
经过我一顿操作,很快实现了需求,但是这风扇直接嗡嗡转,直接感到不妙
算了看看网上有没有轮子
于是我找到了 vue3-seamless-scroll 立马开工
很快我就装上了这个轮子,虽然风扇不转了
但是数据多了的话循环一轮之后就卡一下,不是无缝衔接,找了好多也没找到解决办法

在这里插入图片描述
于是决定继续修自己的轮子,于是就有了以下代码

//html
<div class="scroll"><div class="scrollContainer" ref="scrollContainer"><div class="l-item" v-for="(item, index) in leftList" :key="index">...</div></div>
</div>//css
.scroll {height: 800px;overflow: hidden;
}//js
//封装方法
function toScroll(e: any) {let sc = e.el;if (sc && typeof sc === "object" && sc !== null) {let contentHeight = sc.offsetHeight;if (contentHeight < sc.parentElement.offsetHeight) returnlet distance = 0if (e.direction == 'down') distance = -contentHeightsc.append(sc.cloneNode(sc))let timer = nullif (timer) clearInterval(timer)timer = setInterval(() => {if (e.direction == 'up') {if (distance * -1 < contentHeight) distance--else distance = 0sc.style.transform = 'translate(0px, ' + distance + 'px)';;} else if (e.direction == 'down') {if (distance < 0) distance++else distance = -contentHeightsc.style.transform = 'translate(0px, ' + distance + 'px)';}}, e.step || 3);}
}
//调用
toScroll({el: scrollContainer.value,step: 3,direction: 'up'
})

http://www.ppmy.cn/news/1457874.html

相关文章

Flink面试整理-Flink的性能优化策略

Apache Flink 的性能优化是一个多方面的任务,涉及硬件资源、算法选择、配置调整等多个层面。以下是一些常见的 Flink 性能优化策略: 1. 资源分配和管理 合理配置 TaskManager 和 JobManager:根据作业的需求和可用资源,合理分配内存和 CPU 给 TaskManager 和 JobManager。适…

Ansible --- playbook 脚本+inventory 主机清单

一 inventory 主机清单 Inventory支持对主机进行分组&#xff0c;每个组内可以定义多个主机&#xff0c;每个主机都可以定义在任何一个或 多个主机组内。 如果是名称类似的主机&#xff0c;可以使用列表的方式标识各个主机。vim /etc/ansible/hosts[webservers]192.168.10.1…

DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2,1306310-00-8,是一种重要的多肽化合物

一、试剂信息 名称&#xff1a;DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2CAS号&#xff1a;1306310-00-8结构式&#xff1a; 二、试剂内容 DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2是一种重要的多肽化合物&#xff0c;其CAS号为1306310-00-8。该多肽包含一个DO…

(12)配置Notch滤波器(二)

文章目录 前言 2 启用陷波滤波器 3 陷波滤波器控制类型 4 确定陷波滤波器的中心频率 前言 ArduPilot 支持两个陷波滤波器&#xff0c;对于电机来说&#xff0c;其滤波频率可以与电机的旋转频率相联系&#xff0c;对于直升机来说&#xff0c;可以与转子速度相联系&#xff…

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法 问题截图&#xff1a; 亲测有效的方法 方法一&#xff1a; 选择通过uniapp的开发工具Hbuilder来进行在线打包&#xff0c;取消默认勾选的以下选项。 然后进行在线打包就不会存在提交审…

MYSQL8.0.20安装教程

一&#xff1a;下载mysql MySQL :: Download MySQL Installer (Archived Versions) 二&#xff1a;选中server only&#xff0c;点击next 三&#xff1a;点击server 选项&#xff0c;点击Execute 弹窗点击安装 四&#xff1a;安装项为绿色后&#xff0c;点击next 五&#xf…

IOS 开发 - block 使用详解

1.Blobk的定义 block的写法相对难记,不必司机应被,只需要在xcode里打出"inlineBlock"--回车, 系统会自动帮你把基础版写法给你匹配出来 //Block的基础声明//等号""之前是blobk的声明,等号“”后面是block的实现/*returnType:返回类型(void、int、String *…

硬件设计 之 RS485通信协议简单介绍及RS485测试波形

1.RS485定义&#xff1a; 增强型低功耗半双工RS-485(Enhanced Low Power Half-Duplesx RS-485 Transceivers) RS-485是一种串行通信标准&#xff0c;也被称为EIA-485或TIA-485。它定义了在多个设备之间进行数据传输的电气特性、信号线路和通信协议。 2.RS485通信电平&#xf…