• 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          100%; /*这里的宽高是为了占满盒子*/
    14         height: 100%;
    15     }
    16 
    17     .banner {
    18         position: relative;
    19          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              1366px;
    29             height: 780px;
    30         }
    31 
    32             .banner .b_main .b_m_pic {
    33                 position: relative;
    34                  1366px;
    35                 height: 780px;
    36             }
    37 
    38     .b_main .b_m_pic li {
    39         position: absolute; /*这里给绝对定位,是为了把li叠在一起*/
    40          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              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          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() 方法返回被选元素的所有同级元素。同级元素是共享相同父元素的元素。

      ③ 定时器(实现轮播):

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

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

  • 相关阅读:
    字符串练习
    Python基础
    熟悉常见的Linux命令
    大数据概述
    实验三 递归下降分析法
    简化C语言文法
    实验一 词法分析程序实验
    词法分析程序
    制作首页的显示列表
    完成登录功能
  • 原文地址:https://www.cnblogs.com/ZhangJiXuan/p/10685056.html
Copyright © 2020-2023  润新知