利用jquery实现一个轮播图
[01-首先搭建轮播图骨架]:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 </head> 7 <body> 8 9 </body> 10 </html>
[02-添加区块]:
1 <div class="banner"> 2 <div class="b_main"> 3 <div class="b_m_pic"> 4 <ul> 5 <li> 6 <a> 7 <img src="img/1.png" width="100%" height="100%"/><!--这里的宽高是为了占满盒子--> 8 </a> 9 </li> 10 <li> 11 <a> 12 <img src="img/2.png" width="100%" height="100%"/> 13 </a> 14 </li> 15 <li> 16 <a> 17 <img src="img/3.jpg" width="100%" height="100%"/> 18 </a> 19 </li> 20 <li> 21 <a> 22 <img src="img/4.jpg" width="100%" height="100%"/> 23 </a> 24 </li> 25 <li> 26 <a> 27 <img src="img/5.png" width="100%" height="100%"/> 28 </a> 29 </li> 30 <li> 31 <a> 32 <img src="img/6.png" width="100%" height="100%"/> 33 </a> 34 </li> 35 </ul> 36 </div> 37 </div> 38 <!--小圆点--> 39 <div class="b_list"> 40 <ul> 41 <li class="l_click"></li> 42 <li></li> 43 <li></li> 44 <li></li> 45 <li></li> 46 <li></li> 47 </ul> 48 </div> 49 <div class="b_btn"> 50 <div class="b_left"><</div> 51 <div class="b_right">></div> 52 </div> 53 </div>
[03-css样式]:
1 <style> 2 *{margin:0;padding:0} 3 ul li{list-style:none} 4 img{margin: 0} 5 </style> 6 <style> 7 .banner{position: relative;width: 1366px;height: 780px;margin: 100px auto;border: 10px solid #009999;border-radius: 15px} 8 .banner .b_main{position: relative;width: 1366px;height: 780px;} 9 .banner .b_main .b_m_pic{position: relative;width: 1366px;height: 780px;} 10 .b_main .b_m_pic li{position: absolute;width: 1366px;height: 780px;top: 0;left: 0;}/*这里给绝对定位,是为了把li叠在一起*/ 11 </style> 12 <style> 13 /*小圆点的样式*/ 14 .b_list ul{position:absolute;right: 40px;bottom: 30px;}/*这里的ul根据banner定位*/ 15 .b_list ul li{width: 20px;height: 20px;float: left;background: #333;margin-left: 20px;border-radius: 50px; 16 border:2px solid white;} 17 .b_list ul .l_hover,.b_list ul .l_click{border:2px solid #333;background: white} 18 /*两边耳朵的样式*/ 19 .b_btn div{position: absolute;width: 100px;height: 100px;background: rgba(0,0,0,0.7);font-size: 60px;color: white;text-align: center;line-height: 100px;top: 50%;margin-top: -80px;cursor: pointer;} 20 .b_btn .b_left{left:0;border-radius: 50%}/*移到左边*/ 21 .b_btn .b_right{right:0;border-radius: 50%}/*移到右边*/ 22 </style>
[04-js代码]:
var $li = $(".b_list ul li");//获取.b_list里面的所有li,放到$li这个变量里面
var len = $li.length-1;
var _index = 0;//li的索引
var $img = $(".b_main .b_m_pic li");//同上
var $btn = $(".b_btn div");
var timer = null;
// alert(typeof timer); timer是一个对象
$li.hover(function(){
$(this).addClass("l_hover");//指向li添加样式
},function(){
$(this).removeClass("l_hover");//指向li删除样式
});
//点击事件
$li.click(function(){
_index = $(this).index();
//获取li的下标,改变样式
//$li.eq(_index).addClass("l_click").siblings().removeClass("l_click");
//获取图片的下标,实现淡入淡出
//$img.eq(_index).fadeIn().siblings().fadeOut();
play();
});
//封装函数
function play(){
//获取li的下标,改变样式
$li.eq(_index).addClass("l_click").siblings().removeClass("l_click");
//获取图片的下标,实现淡入淡出
$img.eq(_index).fadeIn().siblings().fadeOut();
}
//两边耳朵的点击事件
$btn.click(function(){
var index = $(this).index();
if(index) {
_index++;
if (_index > len) {
_index = 0;
}
play();
}else {
_index--;
if(_index < 0){
_index = len;
}
play();
}
});
//定时轮播
function auto(){
//把定时器放进timer这个对象里面
timer = setInterval(function(){
_index++;
if(_index > len){
_index = 0;
}
play();
},2000);
}
auto();
//当我移上d_main的时候停止轮播
$(".b_main").hover(function(){
clearInterval(timer);
},function(){
//移开重新调用播放
auto();
});
//当我移上两边耳朵的时候停止轮播
$(".b_btn div").hover(function(){
clearInterval(timer);
},function(){
//移开重新调用播放
auto();
});
[05-下面是我们的效果图]:

[06-总结]:
1、图片、小圆点、两边的耳朵要使用position:absolute绝对定位,进行叠加。
注:绝对定位要根据父级元素进行定位,父级元素要加上position: relative;
2、根据索引值改变图片,达成切图
注:实现淡入淡出分别是fadeIn和fadeOut两个jq方法
siblings() 方法返回被选元素的所有同级元素。同级元素是共享相同父元素的元素。
3、定时器(实现轮播):
setInterval()是开始播放,clearInterval()是关闭,有始有终嘛~~~~~
定时器有两个参数,第一个是函数方法(可以另写一个方法,写上方法名调用,也可以直接写一个function),第二个是时间

浙公网安备 33010602011771号