温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

js焦点轮播图(网摘)

发布时间:2020-07-22 13:59:10 来源:网络 阅读:410 作者:蓓蕾心晴 栏目:开发技术

汇集网上焦点轮播图的实现方式,自己试了下,不过鼠标悬浮停止动画和鼠标离开动画播放好像没生效,不太明白,最后两行代码中,为什么可以直接写stop和play。不用加括号调用函数么?求懂的大神指点!

所用知识点:

1.DOM操作

2.定时器

3.事件运用

4.Js动画

5.函数递归

6.无限滚动大法(可以用js实现一个假图的制作。不过说实话一直理解不了假图的作用原理)

<style>     * {         margin: 0;         padding: 0;     }     a {         text-decoration: none;     }     body {         padding: 20px;     }     #container {         width: 600px; /*这里600x400是图片的宽高*/         height: 400px;         border: 3px solid #333;         overflow: hidden; /*隐藏溢出的图片,因为图片左浮动,总宽度为4200*/         position: relative;     }     #list {         width: 4200px; /*这里设置7张图片总宽度*/         height: 400px;         position: absolute; /*基于父容器container进行定位*/         z-index: 1;     }     #list img {         float: left;         width:610px;     }     #buttons {         position: absolute;         height: 10px;         width: 100px;         z-index: 2; /*按钮在图片的上面*/         bottom: 20px;         left: 250px;     }     #buttons span {         cursor: pointer;         float: left;         border: 1px solid #fff;         width: 10px;         height: 10px;         border-radius: 50%;         background: #333;         margin-right: 5px;     }     #buttons .on {         background: orangered; /*选中的按钮样式*/     }     .arrow {         cursor: pointer;         display: none; /*左右切换按钮默认先隐藏*/         line-height: 39px;         text-align: center;         font-size: 36px;         font-weight: bold;         width: 40px;         height: 40px;         position: absolute;         z-index: 2;         top: 180px;         background-color: RGBA(0, 0, 0, .3);         color: #fff;     }     .arrow:hover {         background-color: RGBA(0, 0, 0, .7);     }     #container:hover .arrow {         display: block; /*当鼠标放上去容器上面就显示左右切换按钮*/     }     #prev {         left: 20px;     }     #next {         right: 20px;     } </style>
<div id="container">     <div id="list" >         <img src="5.jpg" alt="1"/>         <img src="1.jpg" alt="1"/>         <img src="2.jpg" alt="2"/>         <img src="3.jpg" alt="3"/>         <img src="4.jpg" alt="4"/>         <img src="5.jpg" alt="5"/>         <img src="1.jpg" alt="5"/>     </div>     <div id="buttons">         <span index="1" class="on"></span>         <span index="2"></span>         <span index="3"></span>         <span index="4"></span>         <span index="5"></span>     </div>     <a href="javascript:void(0);" id="prev" class="arrow">&lt;</a>     <a href="javascript:void(0);" id="next" class="arrow">&gt;</a></div>
<script>         window.onload = function(){             var container=document.getElementById('container');             var list=document.getElementById('list');             var buttons=document.getElementById('buttons').getElementsByTagName('span');             var next=document.getElementById('next');             var prev=document.getElementById('prev');             var index=1;             var len=5;//图片的数量             var animated=false;//用于判断切换是否进行             var interval=3000; //自动播放定时器的秒数,3秒             var timer; //定时器 //            切换动画             function animate(offset){                 animated=true; //切换进行中                 var time=300; //位移总时间                 var inteval=10; //位移间隔时间                 var speed=offset/(time/inteval); //每次位移量                 var newLeft=parseInt(list.style.left)+offset;                 var go=function(){                     if((speed<0&&parseInt(list.style.left)>newLeft)||(speed>0&&parseInt(list.style.left)>newLeft)){                         list.style.left=parseInt(list.style.left)+speed+'px';                         setTimeout(go,inteval);                     }else{                         animated=false;                         list.style.left=newLeft+'px';                         if(newLeft<-3000){                             list.style.left=-600+'px';                         }                         if(newLeft>-600){                             list.style.left=-3000+'px';                         }                     }                 }                 go();                 /*var newLeft=parseInt(list.style.left)+offset;                 list.style.left=newLeft+'px';                 if(newLeft<-3000){                     list.style.left=-600+'px';                 }                 if(newLeft>-600){                     list.style.left=-3000+'px';                 }*/             } //            为按钮添加样式             function showButton(){                 for(var i=0;i<buttons.length;i++){                     if(buttons[i].className=='on'){                         buttons[i].className='';                         break;                     }                 }                 buttons[index-1].className='on';             }             next.onclick=function(){                 if(animated){                     return;                 }                 if(index==5){                     index=1;                 }else{                     index+=1;                 }                 animate(-600);                 showButton();             }             prev.onclick=function(){                 if(animated){                     return;                 }                 if(index==1){                     index=5;                 }else{                     index-=1;                 }                 animate(600);                 showButton();             } //            通过循环为按钮添加点击事件             for(var i=0;i<buttons.length;i++){                 buttons[i].onclick=function(){                     if(animated){                         return;                     } //                    当继续点击当前按钮的时候,不进行切换                     if(this.className == 'on'){                         return;                     } //                    通过获取按钮标签的自定义属性Index 得到索引值,再计算差值                     var myIndex = parseInt(this.getAttribute('index'));                     //真正的偏移量                     var offset = -600*(myIndex-index);                     animate(offset);                     index=myIndex;                     showButton();                 } //                自动播放                 function play(){                     timer=setTimeout(function(){                         next.onclick();                         play();                     },interval)                 }                 function stop(){                     clearTimeout(timer);                 }                 container.onmouseover=stop;                 container.onmouseout=play;                 play();             }         }     </script>


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI