JavaScript 实现无缝滚动效果详解

作者:窗边听雨

时间:2026-10-22

浏览:215

本文介绍如何使用 JavaScript 实现图片无缝滚动效果。核心在于利用绝对定位控制滚动元素,并通过复制 DOM 内容实现循环衔接。代码中强调使用 offset 属性进行位置判断与比较,确保滚动逻辑准确执行。

文章目录

无缝滚动原理与定位设置

本文分享了一段使用 JavaScript 实现无缝滚动效果的具体代码示例,供读者参考学习。

  • 首先需要明确 CSS 中绝对定位与相对定位的区别。在该实例中,滚动的 Ul 元素必须设置为绝对定位,否则无法实现滚动效果;而包含它的 div1 则作为相对定位容器,Ul 相对于 div1 进行滚动。
  • 实现无缝滚动的核心代码为:oUl.innerHTML=oUl.innerHTML+oUl.innerHTML。这段逻辑通过复制 Ul 的内容,确保无论向左还是向右滚动,总有一组图片紧随其后,从而形成无缝衔接的视觉效果。
  • 在执行操作或进行位置比较时,必须使用 offset 属性来获取数值,以此作为判断和操作的依据。

具体实现代码如下:

完整代码实现


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>无缝滚动2</title>
 <style type="text/css"> 
 *{
  padding: 0;
  margin:0;
 }
 #div1{
  position: relative;
  width: 800px;
  height: 200px;
  background:red;
  margin:100px auto;
  overflow: hidden;
 }
 #div1 ul{
  position: absolute;
  left: 0;
  top: 0;

 }
 #div1 ul li{
  float: left;
  list-style: none;
  width: 200px;
  height: 200px;
 }
 </style>
 <script type="text/javascript">
 window.onload=function()
 {
  var oDiv = document.getElementById('div1');
  var oUl = oDiv.getElementsByTagName('ul')[0];
  var aLi = oDiv.getElementsByTagName('li');
  var aA = document.getElementsByTagName('a');
  var speed = 3;
  oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
  oUl.style.width=aLi.length*aLi[0].offsetWidth+'px';

  var timer=setInterval(move,30);

  function move()
  { 
   if (oUl.offsetLeft<=-oUl.offsetWidth/2) {
    oUl.style.left="0";
    } 
    if(oUl.offsetLeft>0){
     oUl.style.left=-oUl.offsetWidth/2+'px';
    }
    oUl.style.left=oUl.offsetLeft+speed+'px';
  };
  oDiv.onmouseover=function()
  {
   clearInterval(timer);
  };
  oDiv.onmouseout=function()
  {
   timer=setInterval(move,30);
  };
  aA[0].onclick=function()
  {
   speed=-3;
  };
  aA[1].onclick=function()
  {
   speed=3;
  };
 };
 </script>
</head>
<body>
 <a href="javascript:;">向左</a>
 <a href="javascript:;">向右</a>
 <div id="div1">
  <ul>
   <li><img src="images/n1.jpg"></li>
   <li><img src="images/n2.jpg"></li>
   <li><img src="images/n3.jpg"></li>
   <li><img src="images/n4.jpg"></li>
  </ul>
 </div>
</body>
</html>

以上就是本文的全部内容,希望能为读者提供有益的帮助,欢迎大家继续支持本站。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章