分享

简单的原生js轮播图

 instl 2019-08-01

轮播图我们在网站中经常看到,主要就是为了在有限的空间内展示出更多的内容,同时也增加了界面的特效,让页面不是那么死版,让界面动起来,看着更加舒服,话不多说,代码如下:

效果:


HTML代码:

  1. <div id="slide">
  2. <!-- 图片区 -->
  3.     <div id="pic">
  4.         <div class="current"><img src="images/0.jpg" alt=""></div>
  5.         <div><img src="images/1.jpg" alt=""></div>
  6.         <div><img src="images/2.jpg" alt=""></div>
  7.         <div><img src="images/3.jpg" alt=""></div>
  8.         <div><img src="images/4.jpg" alt=""></div>
  9.     </div>
  10.   <!-- 控制点 -->
  11.     <ol id="control">
  12.         <li class="current"></li>
  13.         <li></li>
  14.         <li></li>
  15.         <li></li>
  16.         <li></li>
  17.     </ol>
  18. <!-- 箭头控制区 -->
  19.     <div id="arrow">
  20.         <a class="arrow arrow-left" href="#"><img src="images/arr-left.png" alt=""></a>
  21.         <a class="arrow arrow-right" href="#"><img src="images/arr-right.png" alt=""></a>
  22.     </div>
  23. </div>

 CSS样式:

  1. #slide{width: 500px; height: 313px; margin: 30px auto; position: relative;}//轮播区
  2. #pic div{width: 500px; height: 313px; display:none;}//轮播图
  3. #pic div.current{display: block;}//当前显示轮播
  4. #control{list-style: none; position: absolute; left: 50%; margin-left: -50px; bottom: 15px;}//控制点
  5. #control li{width: 12px; height: 12px; margin-right: 10px; background: #ddd; border-radius: 50%;float: left;}
  6. #control li.current{background: #f00;}//当前控制点样式
  7. #control li:hover{cursor: pointer;}
  8. #arrow{position: absolute; top: 50%;width: 100%; display: none;}//箭头指示器
  9. #arrow .arrow{display: inline-block; width: 32px; height: 32px; background: rgba(0,0,0,0.3);}
  10. #arrow .arrow.arrow-right{float: right;}

JS代码:

  1. window.οnlοad=function(){
  2.     //轮播区
  3.     var slide=document.getElementById('slide');
  4.     //图片区
  5.     var pic=document.getElementById('pic').getElementsByTagName('div');
  6.     //控制区
  7.     var lis=document.getElementById('control').getElementsByTagName('li');
  8.     //箭头控制区
  9.     var arrows=document.getElementById('arrow');
  10.     var arrs=arrows.getElementsByClassName('arrow');
  11.     //自动轮播
  12.     var timer=setInterval(move,1000);
  13.     //定义初始化索引
  14.     var index=0;
  15.     //自动轮播
  16.     function move(){
  17.     //清除当前索引样式
  18.         pic[index].className='';
  19.         //清除当前控制区样式
  20.         lis[index].className='';
  21.         index++;
  22.         if(index==pic.length){
  23.             index=0;
  24.         }
  25.         pic[index].className='current';
  26.         lis[index].className='current';
  27.     }
  28.     //控制区控制轮播
  29.     for (var i=0; i<lis.length; i++){
  30.         //保存当前索引
  31.         lis[i]._index=i;
  32.         lis[i].οnclick=function(){
  33.             //去除当前样式
  34.             lis[index].className='';
  35.             //隐藏当前内容区
  36.             pic[index].className='';
  37.             //修改当前样式
  38.             this.className='current';
  39.             //修改当前图片
  40.             pic[this._index].className='current';
  41.             //修改当前索引
  42.             index=this._index;
  43.         }
  44.     }
  45.     //箭头控制轮播
  46.     //上一张
  47.     arrs[0].οnclick=function(){
  48.         movePre();
  49.     }
  50.     //下一张
  51.     arrs[1].οnclick=function(){
  52.         move();
  53.     }
  54.     //鼠标经过轮播区停止轮播
  55.     slide.οnmοuseοver=function(){
  56.         clearInterval(timer);
  57.         arrows.style.display='inline-block';
  58.     }
  59.     //鼠标离开继续轮播
  60.     slide.οnmοuseοut=function(){
  61.         timer=setInterval(move,1000);
  62.         arrows.style.display='none';
  63.     }
  64.     function movePre(){
  65.         //清除当前样式
  66.         pic[index].className='';
  67.         lis[index].className='';
  68.         index--;
  69.         if (index==-1) {
  70.             index=pic.length-1;
  71.         }
  72.         pic[index].className='current';
  73.         lis[index].className='current';
  74.     }
  75. }

简单的轮播就这么完成了,并没有想象中的那么难,需要的拿去,不谢

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约