JQuery实现一个轮播图

1、HTML

 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" />
 8                     </a>
 9                 </li>
10                 <li>
11                     <a>
12                         <img src="img/2.png" />
13                     </a>
14                 </li>
15                 <li>
16                     <a>
17                         <img src="img/3.jpg" />
18                     </a>
19                 </li>
20                 <li>
21                     <a>
22                         <img src="img/4.jpg" />
23                     </a>
24                 </li>
25                 <li>
26                     <a>
27                         <img src="img/5.png" />
28                     </a>
29                 </li>
30                 <li>
31                     <a>
32                         <img src="img/6.png" />
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>

2、CSS

 1 <style type="text/css">
 2     * {
 3         margin: 0;
 4         padding: 0;
 5     }
 6 
 7     ul li {
 8         list-style: none;
 9     }
10 
11     img {
12         margin: 0;
13         width: 100%; /*这里的宽高是为了占满盒子*/
14         height: 100%;
15     }
16 
17     .banner {
18         position: relative;
19         width: 1366px;
20         height: 780px;
21         margin: 100px auto;
22         border: 10px solid #009999;
23         border-radius: 15px;
24     }
25 
26         .banner .b_main {
27             position: relative;
28             width: 1366px;
29             height: 780px;
30         }
31 
32             .banner .b_main .b_m_pic {
33                 position: relative;
34                 width: 1366px;
35                 height: 780px;
36             }
37 
38     .b_main .b_m_pic li {
39         position: absolute; /*这里给绝对定位,是为了把li叠在一起*/
40         width: 1366px;
41         height: 780px;
42         top: 0;
43         left: 0;
44     }
45     /*小圆点的样式*/
46     .b_list ul {
47         position: absolute; /*这里的ul根据banner定位*/
48         right: 40px;
49         bottom: 30px;
50     }
51 
52         .b_list ul li {
53             width: 20px;
54             height: 20px;
55             float: left;
56             background: #333;
57             margin-left: 20px;
58             border-radius: 50px;
59             border: 2px solid white;
60         }
61 
62         .b_list ul .l_hover, .b_list ul .l_click {
63             border: 2px solid #333;
64             background: white;
65         }
66     /*两边耳朵的样式*/
67     .b_btn div {
68         position: absolute;
69         width: 100px;
70         height: 100px;
71         background: rgba(0,0,0,0.7);
72         font-size: 60px;
73         color: white;
74         text-align: center;
75         line-height: 100px;
76         top: 50%;
77         margin-top: -80px;
78         cursor: pointer;
79     }
80     /*移到左边*/
81     .b_btn .b_left {
82         left: 0;
83         border-radius: 50%;
84     }
85     /*移到右边*/
86     .b_btn .b_right {
87         right: 0;
88         border-radius: 50%;
89     }
90 </style>

3、JS

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

4、效果图

5、总结

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

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

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

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

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

扫描二维码关注公众号,回复: 5846656 查看本文章

  ③ 定时器(实现轮播):

      setInterval()是开始播放,clearInterval()是关闭

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

猜你喜欢

转载自www.cnblogs.com/ZhangJiXuan/p/10685056.html