zoukankan      html  css  js  c++  java
  • 基于jQuery的图片左右轮播,基本原理通用

    毕竟新人,写点基础的小东西,希望能和大家沟通交流,提高自己的水平。

    这个是应用较多的轮播部分,希望能和大家分享一下思路,拓宽视野。

    话不多说,上内容。

    我的思路很简单就是通过判断index值的大小变化来判断图片左移还是右移。通过控制图片的left值,来达到一个轮播的效果。

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="utf-8">
      5         <title></title>
      6     </head>
      7     <script src="js/jquery.min.js"></script>
      8     <style>
      9         .banner{
     10             margin:0 auto;
     11             border: 4px dashed black;
     12             width:400px;
     13             height:200px;
     14             position: relative;
     15             overflow:hidden;
     16         }
     17         .banner a{
     18             z-index: 100;
     19             display: block;
     20             width:100%;
     21             height: 100%;
     22             position: absolute;
     23             left:100%;
     24             top:0;
     25         }
     26         .banner .first{
     27             left:0;
     28         }
     29         .banner a img{
     30             width:100%;
     31             height: 100%;
     32         }
     33         .choose{
     34             z-index: 1000;
     35             position: absolute;
     36             left:150px;
     37             top:180px;
     38             width:100px;
     39             height: 10px;
     40         }
     41         .choose span{
     42             margin-right: 15px;
     43             float: left;
     44             display:block;
     45             background: blue;
     46             width:10px;
     47             height: 10px;
     48             border-radius: 10px;
     49         }
     50         .choose span:hover{
     51             background: red;
     52         }
     53         .choose .red{
     54             background: red;
     55         }
     56         .banner .pre,.next{
     57             cursor:pointer;
     58             text-align:center;
     59             border-radius:20px;
     60             display:block;
     61             background:#cccccc;
     62             opacity:0.4;
     63             text-decoration: none;
     64             z-index: 200;
     65             display:block;
     66             width:40px;
     67             height: 40px;
     68             font-size: 40px;
     69             color:red;
     70             position: absolute;
     71             top:80px;
     72         }
     73         .banner .pre{
     74             left:0px
     75         }
     76         .banner .next{
     77             right: 0px;
     78         }
     79     </style>
     80     <body>
     81         
     82         <div class="banner">
     83             <!--
     84                 这里为上一页下一页点击按钮
     85             -->
     86             <span class="pre">-</span>
     87             <span class="next">+</span>
     88             <!--
     89                 此处为轮播主体,颜色块代替。图片自加
     90             -->
     91             <a href="###" class="first" style="background: pink;"></a>
     92             <a href="###" style="background: blue;"><img src="images/banner1.jpg"/></a>
     93             <a href="###" style="background: greenyellow;"><img src="images/banner2.jpg"/></a>
     94             <a href="###" style="background: deepskyblue;"><img src="images/banner3.jpg"/></a>
     95             <!--
     96                 此处为轮播部分下方小点选择
     97             -->
     98             <div class="choose">
     99                 <span class="red"></span>
    100                 <span></span>
    101                 <span></span>
    102                 <span></span>
    103             </div>
    104         </div>
    105         
    106         <script>
    107             /*定义两个变量,保存当前页码和上一页页码*/
    108             var $index=0;
    109             var $exdex=0;
    110             /*小点的鼠标移入事件,触发图片左移还是右移*/
    111             $(".choose span").mouseover(function(){
    112                 //获取当前移入的index值
    113                 $index=$(this).index();        
    114                 //首先让点的颜色变化,表示选中
    115                 $(".choose span").eq($index).addClass("red").siblings().
    116                         removeClass("red");
    117                 //判断如果index变小,证明图片要往左移动。变大则为右移
    118                 if($index>$exdex){
    119                     next();
    120                 }else if($index<$exdex){
    121                     pre();
    122                 }
    123                 //移动完毕将当前index值替换了前页index
    124                 return $exdex=$index;
    125             });
    126             //下一页的点击事件。在右移基础上加了最大index判断
    127             $(".next").click(function(){
    128                 $index++;
    129                 if($index>3){
    130                     $index=0
    131                 }
    132                 $(".choose span").eq($index).addClass("red").siblings().
    133                         removeClass("red");
    134                 next();
    135                 return $exdex=$index;
    136             });
    137             //上一页的点击事件
    138             $(".pre").click(function(){
    139                 $index--;
    140                 if($index<0){
    141                     $index=3
    142                 };
    143                 $(".choose span").eq($index).addClass("red").siblings().
    144                     removeClass("red");
    145                 pre();
    146                 return $exdex=$index;
    147             });
    148             //加个定时器,正常轮播
    149             var atime=setInterval(function(){
    150                 $(".next").click();            
    151             },1000);
    152             //这里为右移和左移的事件函数。
    153             //右移基本原理就是先让exdex定位的left左移百分百,而选中的当前页从屏幕右边移入,left变为0
    154             function next(){
    155                 $(".banner a").eq($index).stop(true,true).
    156                         css("left","100%").animate({"left":"0"});
    157                 $(".banner a").eq($exdex).stop(true,true).
    158                         css("left","0").animate({"left":"-100%"});
    159             }
    160             function pre(){
    161                 $(".banner a").eq($index).stop(true,true).
    162                     css("left","-100%").animate({"left":"0"});
    163                 $(".banner a").eq($exdex).stop(true,true).
    164                     css("left","0").animate({"left":"100%"});
    165             }
    166         </script>
    167     </body>
    168 </html>

    希望大家指出问题,交流思路,让我们彼此思路能够更宽广。

    致谢

  • 相关阅读:
    共创力董事长杨学明先生受邀参加CED智慧大会!
    杨学明老师为华宇金信(北京)软件有限公司提供为期两天的内训服务!
    《互联网敏捷测试管理实践》课程大纲 2018.12.15~16 (上海)
    共创力咨询杨学明老师为国电南瑞提供两天的内训服务!
    《软件测试管理》深圳公开课预告 2018.11.23~24 中南海滨大酒店
    软件测试管理的十大挑战
    对于开发人员修改代码引发新问题的处理措施
    热烈庆祝杨学明老师为上海某著名金融互联网公司提供两天的内训服务!
    《高效的互联网研发项目管理》课程大纲
    《软件测试管理》北京公开课预告 2018.9.28~29
  • 原文地址:https://www.cnblogs.com/qj0813/p/5072314.html
Copyright © 2011-2022 走看看