首页 > 编程 > JavaScript > 正文

jQuery实现轮播图及其原理详解

2019-11-19 13:14:28
字体:
来源:转载
供稿:网友

本文实例为大家分享了jQuery实现轮播图及其原理的具体代码,供大家参考,具体内容如下

<!DOCTYPE html><html><head> <meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>JQuery轮播图</title> <style>  *{   padding:0;   margin:0;  }  .container{   width:600px;   height:400px;   overflow: hidden;   position:relative;   margin:0 auto;  }  .list{   width:3000px;   height:400px;   position:absolute;  }  .list>img{   float:left;   width:600px;   height:400px;  }  .pointer{   position:absolute;   width:100px;   bottom:20px;   left:250px;  }  .pointer>span{   cursor:pointer;   display:inline-block;   width:10px;   height:10px;   background: #7b7d80;   border-radius:50%;   border:1px solid #fff;  }  .pointer .on{   background: #28a4c9;  }  .arrow{   position:absolute;   text-decoration:none;   width:40px;   height:40px;   background: #727d8f;   color:#fff;   font-weight: bold;   line-height:40px;   text-align:center;   top:180px;   display:none;  }  .arrow:hover{   background: #0f0f0f;  }  .left{   left:0;  }  .right{   right:0;  }  .container:hover .arrow{   display:block;  } </style></head><body> <div class="container">  <div class="list" style="left:0px;">   <!--<img src="../static/image/photo1.jpg" alt="5"/>-->   <img src="../static/image/banner.jpg" alt="1"/>   <img src="../static/image/slide1.jpg" alt="2"/>   <img src="../static/image/slide1.jpg" alt="3"/>   <img src="../static/image/slide1.jpg" alt="4"/>   <img src="../static/image/photo1.jpg" alt="5"/>   <!--<img src="../static/image/banner.jpg" alt="1"/>-->  </div>  <div class="pointer">   <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="#" rel="external nofollow" rel="external nofollow" class="arrow left">></a>  <a href="#" rel="external nofollow" rel="external nofollow" class="arrow right"><</a> </div> <script src="../static/js/jquery-3.2.1.min.js"></script> <script>  var imgCount = 5;  var index = 1;  var intervalId;  var buttonSpan = $('.pointer')[0].children;//htmlCollection 集合  //自动轮播功能 使用定时器  autoNextPage();  function autoNextPage(){   intervalId = setInterval(function(){    nextPage(true);   },3000);  }  //当鼠标移入 停止轮播  $('.container').mouseover(function(){   console.log('hah');   clearInterval(intervalId);  });  // 当鼠标移出,开始轮播  $('.container').mouseout(function(){   autoNextPage();  });  //点击下一页 上一页的功能  $('.left').click(function(){   nextPage(true);  });  $('.right').click(function(){   nextPage(false);  });  //小圆点的相应功能 事件委托  clickButtons();  function clickButtons(){   var length = buttonSpan.length;   for(var i=0;i<length;i++){    buttonSpan[i].onclick = function(){     $(buttonSpan[index-1]).removeClass('on');     if($(this).attr('index')==1){      index = 5;     }else{      index = $(this).attr('index')-1;     }     nextPage(true);    };   }  }  function nextPage(next){   var targetLeft = 0;   //当前的圆点去掉on样式   $(buttonSpan[index-1]).removeClass('on');   if(next){//往后走    if(index == 5){//到最后一张,直接跳到第一张     targetLeft = 0;     index = 1;    }else{     index++;     targetLeft = -600*(index-1);    }   }else{//往前走    if(index == 1){//在第一张,直接跳到第五张     index = 5;     targetLeft = -600*(imgCount-1);    }else{     index--;     targetLeft = -600*(index-1);    }   }   $('.list').animate({left:targetLeft+'px'});   //更新后的圆点加上样式   $(buttonSpan[index-1]).addClass('on');  } </script></body></html>

效果图:

原理:

页面结构方面:

将轮播图容器设置成相对定位,宽度设置成图片的宽度;容器中分为四部分:轮播的图片;点击的小按钮;前一张;后一张

样式方面:

  • 轮播图容器为相对定位,宽度/高度设置成图片的宽度/高度,设置overflow为hidden;
  • 容器中的每一部分都设置成绝对定位,放到相应的位置;
  • 轮播图片的容器宽度设置成所有图片的宽度和,left开始先设置为0;
  • 每张图片宽度一样,都设成左浮动,左右图片都在一行排列,所以轮播图的实质是装有图片的容器的移动,每次移动的距离为一张图片的宽度,这样每次就只显示一张图片;
  • 前一张/后一张设置成display为none,当鼠标移入总容器时,再设置成display为block

功能方面:

自动轮播为一个定时循环机制setInteval,鼠标移入,循环停止,移除循环继续;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

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