JQ实现一个轮播图

搭建我们的骨架:

 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5        <title></title>
 6     </head>
 7     <body>
 8 
 9     </body>
10 </html>
11     

添加区块

<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">&lt</div>
51             <div class="b_right">&gt</div>
52         </div>
53     </div>

CSS样式

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

js代码

var $li = $(".b_list ul li");//获取.b_list里面的所有li,放到$li这个变量里面
 2         var len = $li.length-1;
 3         var _index = 0;//li的索引
 4         var $img = $(".b_main .b_m_pic li");//同上
 5         var $btn = $(".b_btn div");
 6 
 7         var timer = null;
 8 
 9         //  alert(typeof timer); timer是一个对象
10 
11         $li.hover(function(){
12             $(this).addClass("l_hover");//指向li添加样式
13         },function(){
14             $(this).removeClass("l_hover");//指向li删除样式
15         });
16 
17         //点击事件
18         $li.click(function(){
19             _index = $(this).index();
20             //获取li的下标,改变样式
21             //$li.eq(_index).addClass("l_click").siblings().removeClass("l_click");
22             //获取图片的下标,实现淡入淡出
23             //$img.eq(_index).fadeIn().siblings().fadeOut();
24             play();
25         });
26 
27         //封装函数
28         function play(){
29             //获取li的下标,改变样式
30             $li.eq(_index).addClass("l_click").siblings().removeClass("l_click");
31             //获取图片的下标,实现淡入淡出
32             $img.eq(_index).fadeIn().siblings().fadeOut();
33         }
34 
35         //两边耳朵的点击事件
36             $btn.click(function(){
37                 var index = $(this).index();
38                 if(index) {
39                     _index++;
40                     if (_index > len) {
41                         _index = 0;
42                     }
43                     play();
44                 }else {
45                     _index--;
46                     if(_index < 0){
47                         _index = len;
48                     }
49                     play();
50                 }
51             });
52 
53         //定时轮播
54         function auto(){
55             //把定时器放进timer这个对象里面
56             timer = setInterval(function(){
57                 _index++;
58                 if(_index > len){
59                     _index = 0;
60                 }
61                 play();
62             },2000);
63         }
64         auto();
65 
66         //当我移上d_main的时候停止轮播
67         $(".b_main").hover(function(){
68             clearInterval(timer);
69         },function(){
70             //移开重新调用播放
71             auto();
72         });
73         //当我移上两边耳朵的时候停止轮播
74         $(".b_btn div").hover(function(){
75             clearInterval(timer);
76         },function(){
77             //移开重新调用播放
78             auto();
79         });

总结:

1、图片、小圆点、两边的耳朵要使用position:absolute绝对定位,进行叠加。

    注:绝对定位要根据父级元素进行定位,父级元素要加上position: relative;

  2、根据索引值改变图片,达成切图

    注:实现淡入淡出分别是fadeIn和fadeOut两个jq方法

      siblings() 方法返回被选元素的所有同级元素。同级元素是共享相同父元素的元素。

  3、定时器(实现轮播):

      setInterval()是开始播放,clearInterval()是关闭,有始有终嘛~~~~~

      定时器有两个参数,第一个是函数方法(可以另写一个方法,写上方法名调用,也可以直接写一个function),第二个是时间

猜你喜欢

转载自blog.csdn.net/liutianjie/article/details/84098798