JavaScript

超轻量级php框架startmvc

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

更新时间:2020-04-24 21:10:01 作者:startmvc
这个版本可以控制左右滚动,鼠标点击对应的广告会自动滑动把广告完全展示出来。还实现

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

效果图:

代码如下:


<!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>

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

js 无缝滚动 js实现无缝滚动 js实现左右无缝滚动