请使用纯js实现一个横向或纵向的无缝滚动效果

news/2025/1/20 14:18:05/文章来源:https://www.cnblogs.com/ai888/p/18681262

以下是一个使用纯JavaScript实现的简单无缝滚动效果的示例。这个例子是横向滚动的,但你可以通过修改CSS和JavaScript中的某些部分来轻松实现纵向滚动。

HTML:

<div id="scrollContainer"><div id="scrollContent"><img src="image1.jpg" alt="Image 1"><img src="image2.jpg" alt="Image 2"><img src="image3.jpg" alt="Image 3"><!-- 重复内容以实现无缝滚动 --><img src="image1.jpg" alt="Image 1"><img src="image2.jpg" alt="Image 2"><img src="image3.jpg" alt="Image 3"></div>
</div>

CSS:

#scrollContainer {width: 300px; /* 滚动容器的宽度 */overflow: hidden; /* 隐藏超出容器的内容 */position: relative; /* 相对定位 */
}#scrollContent {width: 600px; /* 内容宽度应为容器宽度的两倍(或更多,取决于内容的重复次数) */position: absolute; /* 绝对定位 */left: 0; /* 初始位置 */animation: scroll 5s linear infinite; /* 应用动画 */
}#scrollContent img {width: 100px; /* 图片宽度 */float: left; /* 使图片水平排列 */
}/* 定义动画 */
@keyframes scroll {0% { left: 0; }50% { left: -300px; } /* 移动到容器的宽度 */100% { left: 0; } /* 重置位置以实现无缝滚动 */
}

注意:在CSS中,我们使用了@keyframes来定义一个名为scroll的动画。这个动画将内容从左向右移动,然后在到达容器的宽度时重置其位置,从而实现无缝滚动。对于纵向滚动,你需要修改left属性为top,并相应地调整容器和内容的高度以及图片的排列方式。

然而,如果你想要一个更灵活的解决方案,或者想要通过JavaScript来控制滚动的速度和方向,你可以使用以下JavaScript代码来代替CSS中的动画部分:

JavaScript:

var scrollContainer = document.getElementById('scrollContent');
var scrollSpeed = 2; // 滚动速度(像素/毫秒)
var scrollDirection = -1; // 滚动方向(-1 为向左,1 为向右)
var scrollLeft = 0; // 初始滚动位置
var contentWidth = scrollContainer.offsetWidth / 2; // 内容的一半宽度(用于无缝滚动)// 使用 setInterval 来定期更新滚动位置
setInterval(function() {scrollLeft += scrollSpeed * scrollDirection;if (scrollLeft < -contentWidth) { // 当滚动到内容的一半宽度时,重置位置以实现无缝滚动scrollLeft = 0;} else if (scrollLeft > 0) { // 当滚动到初始位置时,也可以重置(可选)scrollLeft = -contentWidth;}scrollContainer.style.left = scrollLeft + 'px'; // 更新滚动位置
}, 10); // 每10毫秒更新一次(可以根据需要调整)

在这个JavaScript示例中,我们使用setInterval来定期更新滚动位置,从而实现无缝滚动。你可以通过修改scrollSpeedscrollDirection变量来控制滚动的速度和方向。

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

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

相关文章

注解开发 -2025/1/19

纯注解开发bean管理 知识点1:@Autowired名称 @Autowired类型 属性注解 或 方法注解(了解) 或 方法形参注解(了解)位置 属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面作用 为引用类型属性设置值属性 required:true/false,定义该属性是否允…

CTFshow-Web入门模块-爆破-web23

CTFshow-Web入门模块-爆破-web23题目源码 php代码爆破 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-03 11:43:51 # @Last Modified by: h1xa # @Last Modified time: 2020-09-03 11:56:11 # @email: h1xa@ctfer.com # @link: https://ctfer.com…

prometheus安装及使用

Prometheus 架构图环境准备: 10.0.0.31 prometheus-server31 2 core 2GB+10.0.0.32 prometheus-server32 1 core 1GB+10.0.0.33 prometheus-server331 core 1GB+10.0.0.41 node-exporter41 1 core 1GB+10.0.0.42 node-exporter42 1 core 1GB+10.0.0.43 node-exporter431 core 1…

【SQL Server】Service Broker——在单个数据库建完成对话

一般来说,在SQL Server中调用存储过程,是同步的。如果一个操作比较长,那么我们我们希望执行异步操作。 消息队列概念 。消息队列在SQL Server李,是一种存储消息的结构。消息生产者将消息发送到队列中,而消息消费者则从队列中读取并处理消息。这种机制实现了应用程序组件之…

uos 开发笔记

version GLIBCXX_3.4.26 not found的问题解决 一查看是否有这个库/lib64/libstdc++.so.6 二查看这个库/lib64/libstdc++.so.6中的的GLIBCXX的支持的版本 经查看是环境里已经有这个库,并且是个软连接,软连接到libstdc++.so.6.0.19查看这个库/lib64/libstdc++.so.6中的的GLIBC…

C#/.NET/.NET Core技术前沿周刊 | 第 22 期(2025年1.13-1.19)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

映射注入

一、前言 在所有先前的实现中,私有内存类型都用于在执行期间存储有效负载。私有内存是使用 VirtualAlloc 或 VirtualAllocEx 分配的,如下图所示可以看到内存类型属于Private二、映射内存注入 分配私有内存的过程因被恶意软件广泛使用而受到安全解决方案的高度监控。为了避免使…

攀高行为检测识别摄像机

攀高行为检测识别摄像机具有高清晰度和远程监控功能。通过高清晰度的摄像头捕捉到工作人员在高空作业中的实时图像,并通过远程监控系统进行数据传输和处理。管理人员可以随时随地查看工作人员的操作情况,及时发现异常行为并采取相应措施。攀高行为检测识别摄像机支持多种智能…

升降梯人数统计识别摄像机

升降梯人数统计识别摄像机具有高效的图像识别功能。通过高清晰度的摄像头捕捉到升降梯内乘客的图像,并通过图像识别技术进行快速准确的人数统计。并通过智能算法对数据进行融合分析。通过多源数据融合分析,可以更加全面准确地评估升降梯内乘客流量情况。升降梯人数统计识别摄…

边坡监测预警摄像机

边坡监测预警摄像机是一种结合了摄像技术和智能算法的设备,能够实时监测边坡的变化情况,并通过分析和识别地表位移、裂缝扩展等特征来提供监测和预警服务。这种摄像机在土木工程、地质灾害防治、城市规划等领域有着广泛的应用,可以帮助管理人员及时发现潜在风险并采取相应措…

防疲劳驾驶摄像头

防疲劳驾驶摄像头具有高清晰度和远程监控功能。通过高清晰度的摄像头实时捕捉到驾驶员的面部表情和眼睛活动情况,并通过远程监控系统进行数据传输和处理。当系统检测到驾驶员出现打哈欠、频繁眨眼等疲劳征兆时,会自动触发警示系统,提醒司机注意休息或换班。防疲劳驾驶摄像头…

vue3.5保证你看得明明白白

子组件中设置默认属性 <template><div class="child-page"><h1>我是子组件</h1><h3>{{ total }}</h3><h3>{{ userInfo }} </h3></div> </template><script setup> // 在<script setup>defi…