纯JS实现图片无缝循环滚动效果

作者:窗边听雨

时间:2026-10-30

浏览:263

本文介绍如何使用纯JavaScript实现图片的平滑无缝滚动效果。核心思路是通过复制内容块,利用setInterval定时器控制scrollLeft属性,当滚动距离达到临界值时瞬间重置位置,从而在视觉上形成无限循环。文章包含完整的HTML结构、CSS样式及JS逻辑代码,并详细解析了scrollLeft与offsetWidth的关键作用。

文章目录

纯JS实现图片无缝滚动效果

本文介绍如何使用纯JavaScript实现图片的平滑无缝滚动效果。

纯JS实现图片无缝滚动效果

首先展示最终实现的视觉效果:

网页样式与布局

接下来定义网页的基础样式:


 #demo {

 background: #FFF;

 overflow:hidden;

 border: 1px dashed #CCC;

 width: 1280px;

 height:200px;

 }

 #demo img {

 border: 3px solid #F2F2F2;

 }

 #indemo {

 float: left;

 width: 800%;

 }

 #demo1 {

 float: left;

 }

 #demo2 {

 float: left;

 }

页面布局结构如下:


 <div id="demo">

 <div id="indemo">

 <div id="demo1">

 <a href="#"><img src="banner.jpg" border="0" /></a>

 <a href="#"><img src="banner2.jpg" border="0" /></a>

 </div>

 <div id="demo2"></div>

 </div>

 </div>

JavaScript核心逻辑

具体的JavaScript实现逻辑如下:


 <script>

 var speed=10;

 var tab=document.getElementById("demo");

 var tab1=document.getElementById("demo1");

 var tab2=document.getElementById("demo2");

 tab2.innerHTML=tab1.innerHTML;

 function Marquee(){

 if(tab2.offsetWidth-tab.scrollLeft==0)

 tab.scrollLeft-=tab1.offsetWidth

 else{

 tab.scrollLeft++;

 }

 }

 var MyMar=setInterval(Marquee,speed);

 tab.onmouseover=function() {clearInterval(MyMar)};

 tab.onmouseout=function() {MyMar=setInterval

 (Marquee,speed)};

 </script>

关键属性与原理说明

在实现过程中需要注意以下几个关键点:

scrollLeft属性表示页面利用滚动条滚动到右侧时,隐藏在滚动条左侧的页面宽度。

offsetWidth表示对象的可见宽度,包含滚动条等边线,其数值会随窗口显示大小的改变而变化。

setInterval()方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。该方法会不停地调用函数,直到clearInterval()被调用或窗口被关闭。

理解了上述概念,即可明白具体的实现原理。

实现原理如下:首先将需要滚动的内容复制一份。当右侧div显示的内容与左侧隐藏内容的宽度相同时,将父容器左侧隐藏的内容显示出来,同时将右侧内容重新隐藏。如果右侧内容显示的部分少于左侧隐藏的内容,则继续将父容器向左移动以实现隐藏。需要注意的是,由于这里将两张图片同时放入左侧,当右侧显示了一半时,会将左侧隐藏的内容完全显示出来。又因为右侧显示的内容与左侧的内容相同,从而实现了循环滚动的效果。

至此,平滑的滚动效果即告完成。

以上这篇JS平滑无缝滚动效果的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章