首页 > 编程 > JavaScript > 正文

js实现无缝滚动图(可控制当前滚动的方向)

2019-11-19 17:27:34
字体:
来源:转载
供稿:网友

这个版本可以控制左右滚动,鼠标点击对应的广告会自动滑动把广告完全展示出来。还实现了记录当前滚动的方向,当鼠标离开,接着继续滚动!!!

效果图:

代码如下:

<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <style type = "text/css"> *{margin: 0; padding: 0;}  li { list-style: none; }  .box {  width: 800px;  height: 450px;  margin: 50px auto;  overflow: hidden;   position: relative;  }  .box span {  width: 40px;  height: 60px;    display: block;  position: absolute;  top: 225px;  margin-top: -20px;  cursor: pointer;  z-index: 1;  }  .box #left { background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042311cbd7gbjd7sggkd2b.png') no-repeat; left: 0;    display: none;  }  .box #right {  background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042241w8z4hx4m4pjhyjzs.png') no-repeat;  right: 0;   display: none;  }  #ad {  width: 4000px;  height: 450px;  position: absolute;  }  #ad li { float: left;  } </style> <script type = "text/javascript">  window.onload = function(){  var ad = document.getElementById("ad");  var lef = document.getElementById("left");  var rig = document.getElementById("right");  var timer = null; //管理定时器 var aspect = true;  function animate(obj,speed){   //关闭上一个定时器   clearInterval(obj.timer);   //管理定时器 obj.timer = setInterval(autoAd,30);   function autoAd(){   //判断左走或者右走   if(speed > 0){    aspect = true;    if(obj.offsetLeft >= 0){    obj.style.left = -3200 + 'px';    } }else {    aspect = false;    if(obj.offsetLeft <= -3200){    obj.style.left = 0;    } }   //匀速动画: 盒子当前的位置 + 步长   obj.style.left = obj.offsetLeft + speed +"px";   } } animate(ad,-5); //鼠标划入显示控制按钮并关闭  ad.parentNode.onmouseover = function(){   clearInterval(ad.timer); lef.style.display = "block";   rig.style.display = "block"; };  //鼠标离开隐藏控制按钮并启动定时器  ad.parentNode.onmouseout = function(){   clearInterval(ad.timer);   clearInterval(timer);   lef.style.display = "none";   rig.style.display = "none"; if(aspect){ animate(ad,5); }else{ animate(ad,-5); }  };  ad.onclick = function(event){   //关闭自动轮播定时器   clearInterval(ad.timer);   clearInterval(timer);   var event = event || window.event; if(event.target){   var target = - parseInt(event.target.alt) * 800; }else{   var target = - parseInt(event.srcElement.alt) * 800; }   timer = setInterval(function(){   var step = (target - ad.offsetLeft) / 10;   step = step > 0 ? Math.ceil(step):Math.floor(step);   ad.style.left = ad.offsetLeft + step + "px";   if(ad.offsetLeft%800 == 0){    clearInterval(timer); } },20) }  //右移动  lef.onclick = function(){   clearInterval(timer);   animate(ad,5);  };  //左移动  rig.onclick = function(){   clearInterval(timer); animate(ad,-5); };  } </script> </head> <body> <div class="box">  <ul id="ad"> <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153lscsitwp7sszb6zs.jpg" alt="0"></li> <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042152pfbkbfe8vbtvulfu.jpg" alt="1"></li> <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153u3jgn0ds43ndd3dz.jpg" alt="2"></li> <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042152juuohne22z60hbsb.jpg" alt="3"></li> <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153lscsitwp7sszb6zs.jpg" alt="4"></li> </ul> <span id="left"></span> <span id="right"></span> </div> </body></html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持武林网!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表