javascript无缝滚动效果代码示例

发布时间:2019-10-05编辑:脚本学堂
用javascript实现无缝滚动效果的一段代码,鼠标移入图片时停止滚动,鼠标移出自动滚动,需要的朋友参考下。

js 效果:
鼠标移入图片 停止滚动,鼠标移出自动滚动。

1、调整向左或右方向滚动
 

复制代码 代码示例:

<style type="text/css">
* {
 margin: 0;
 padding: 0;
}
#div1 {
 overflow: hidden;
 width: 712px;
 height: 108px;
 margin: 100px auto;
 position: relative;
 background: red;
}
#div1 ul {
 position: absolute;
 left: 0;
 top: 0;
}
#div1 ul li {
 float: left;
 width: 178px;
 height: 108px;
 list-style: none;
}
</style>
<body>
  <a href="javascript:;">向左走</a>
  <a href="javascript:;">向右走</a>
  <div id="div1">
<ul>
 <li>
  <img src="img/无缝滚动/1.jpg" />
 </li>
 <li>
  <img src="img/无缝滚动/2.jpg" />
 </li>
 <li>
  <img src="img/无缝滚动/3.jpg" />
 </li>
 <li>
  <img src="img/无缝滚动/4.jpg" />
 </li>
</ul>
  </div>

 </body>
 

以上为一个简单的网页布局。

javascript 代码:
 

复制代码 代码示例:

<script type="text/javascript">
window.onload = function() {
 var oDiv = document.getElementById("div1");
 var oUl = oDiv.getElementsByTagName('ul')[0];
 var aLi = oUl.getElementsByTagName('li');
 var speed = 2;
 oUl.innerHTML += oUl.innerHTML;
 // www.jb200.com
 oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';

 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';
 }

 var timer = setInterval(move, 30);
 oDiv.onmouseover = function() {
  clearInterval(timer);
 };

 oDiv.onmouseout = function() {
  timer = setInterval(move, 30);
 };

 document.getElementsByTagName('a')[0].onclick = function() {
  speed = -2;
 };
 document.getElementsByTagName('a')[1].onclick = function() {
  speed = 2;
 };
}
  </script>

思路:
首先设置ul 里面的图片一共有8张 oUl.innerHTML += oUl.innerHTML;
在 计算ul的宽度为 li的实际宽度*8
之后将 多余的内容隐藏

注意:
oUl.offsetLeft 肯定是负值

判断时不要把负号漏掉:
 

复制代码 代码示例:

if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
  oUl.style.left = '0';

}
 

图片滚动到一半了,迅速把图片拉回来,因为程序执行的太快,所以几乎看不出来实现无缝滚动。
最后使用 变量 speed 来控制左右方向的滚动。