• 手写工具之——图片轮播器


    方法一:(淡入式)

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4     <title></title>
      5     <script type="text/javascript" src="JS/jquery-1.11.3.js"></script>
      6     <style type="text/css">
      7         #banners {
      8             1000px;
      9             height:500px;
     10             margin:0 auto;
     11             position:relative;
     12         }
     13 
     14         .banner {
     15             display:block;
     16             1000px;
     17             height:500px;
     18             position:absolute;
     19         }
     20 
     21         #bars {
     22             display:table;
     23             margin:0 auto;
     24         }
     25 
     26         .bar {
     27             display:inline-block;
     28             40px;
     29             height:6px;
     30             margin:0 5px;
     31             background-color:#B3B9AF;
     32         }
     33     </style>
     34 
     35     <script type="text/javascript">
     36         window.onload = function () {
     37             $(function () {
     38                 var banners = document.getElementsByClassName("banner");
     39                 var bannersLength = banners.length;
     40                 var bars = document.getElementsByClassName("bar");
     41                 //定义一个定时循环淡入的指示器,方便后面取消定时循环淡入
     42                 var fade;
     43 
     44                 //依次设置banner的堆叠层次,此处"堆叠增量"为1(且从1开始堆叠)
     45                 for (var i = 0; i < bannersLength; i++) {
     46                     $(banners[i]).css("z-index", (i + 1));
     47                 }
     48 
     49                 //设置初始时的可见banner及其对应bar的指示色
     50                 for (var i = 0; i < bannersLength; i++) {
     51                     if (i == 0) {
     52                         $(banners[i]).css("display", "block");
     53                         $(bars[i]).css("background-color", "black");
     54                     } else {
     55                         $(banners[i]).css("display", "none");
     56                     }
     57                 }
     58 
     59                 //定时循环淡入,fadeLoop只是对定时循环淡入的封装,方便后面调用
     60                 function fadeLoop() {
     61                     fade = setInterval(function () {
     62                         for (var i = 0; i < bannersLength; i++) {
     63                             if ($(banners[i]).css("display") == "block") {
     64                                 //使用模运算,实现周期性循环回归; fadeIndex指示要淡入的对象
     65                                 var fadeIndex = (i + 1) % bannersLength;
     66                                 $(banners[fadeIndex]).fadeIn(3000);
     67 
     68                                 //设置已淡入对象的可见性
     69                                 $(banners[fadeIndex]).css("display", "block");
     70                                 //设置已淡入对象对应bar的指示色
     71                                 $(bars[fadeIndex]).css("background-color", "black");
     72 
     73                                 for (var j = 0; j < bannersLength; j++) {
     74                                     //设置未淡入对象的可见性及其对应bar的指示色
     75                                     if (j != fadeIndex) {
     76                                         $(banners[j]).css("display", "none");
     77                                         $(bars[j]).css("background-color", "#B3B9AF");
     78                                     }
     79                                 }
     80 
     81                                 //一旦for循环里的if条件得到满足,则使用break语句结束循环(也将结束包裹for循环的匿名函数)
     82                                 break;
     83                             }
     84                         }
     85                     }, 5000);
     86                 }
     87 
     88                 //执行循环淡入
     89                 fadeLoop();
     90 
     91                 $('.banner').hover(
     92                     //鼠标移入banner时取消循环淡入
     93                     function () {
     94                         clearInterval(fade);
     95                     },
     96                     //鼠标移出banner时继续循环淡入
     97                     function () {
     98                         fadeLoop();
     99                     }
    100                 );
    101 
    102                 $('.bar').hover(
    103                     //鼠标移入bars中的某个bar时显示对应的banner图且置该bar的颜色为黑色,并取消定时循环淡入
    104                     function (e) {
    105                         $barImage = '#' + $(e.target).attr('id') + 'Image';
    106 
    107                         $('.banner').hide();
    108                         $($barImage).fadeIn();
    109 
    110                         $('.bar').css('background-color', '#B3B9AF');
    111                         $(e.target).css('background-color', 'black');
    112 
    113                         clearInterval(fade);
    114                     },
    115                     //鼠标移出bars中的某个bar时继续定时循环淡入
    116                     function () {
    117                         fadeLoop();
    118                     }
    119                 );
    120             });
    121         }
    122     </script>
    123 </head>
    124 <body>
    125     <div id="section1">
    126         <div id="banners">
    127             <!--
    128                 每一个banner的id属性中的数字与其所对应的bar的id属性中的数字一致
    129                 (该数字由可后端生成<在HTML的id属性层面使用数字进行元素关联>)
    130             -->
    131             <img id="bar1Image" class="banner" src="images/banner1.jpg" />
    132             <img id="bar2Image" class="banner" src="images/banner2.jpg" />
    133             <img id="bar3Image" class="banner" src="images/banner3.jpg" />
    134         </div>
    135         <div id="bars">
    136             <span id="bar1" class="bar"></span>
    137             <span id="bar2" class="bar"></span>
    138             <span id="bar3" class="bar"></span>
    139         </div>
    140     </div>
    141 </body>
    142 </html>

    方法二:简单回归循环

     1 <!DOCTYPE> 
     2 <html> 
     3 <head> 
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     5     <title>图片轮播</title> 
     6     <script type="text/javascript">
     7         var curIndex = 0;
     8         var timeInterval = 3000;
     9 
    10         var arr = new Array();
    11         arr[0] = "1.png";
    12         arr[1] = "2.png";
    13         arr[2] = "3.png";
    14         arr[3] = "4.png";
    15         arr[4] = "5.png";
    16 
    17         function changeImg() {
    18             var obj = document.getElementById("obj");
    19             if (curIndex == arr.length - 1) {
    20                 curIndex = 0;
    21             } else {
    22                 curIndex++;
    23             }
    24             obj.src = arr[curIndex];
    25         }
    26 
    27         setInterval(changeImg, timeInterval);
    28     </script> 
    29 </head> 
    30 <body> 
    31     <img id="obj" src="1.png" /> 
    32 </body> 
    33 </html>
  • 相关阅读:
    【BZOJ-3627】路径规划 分层图 + Dijkstra + spfa
    Codeforces 刷水记录
    【POJ-1390】Blocks 区间DP
    【BZOJ-1656】The Grove 树木 BFS + 射线法
    【BZOJ-1127】KUP 悬线法 + 贪心
    【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
    【BZOJ-1570】BlueMary的旅行 分层建图 + 最大流
    【BZOJ-2325】道馆之战 树链剖分 + 线段树
    Codeforces乱刷集合
    【Codeforces710F】String Set Queries (强制在线)AC自动机 + 二进制分组
  • 原文地址:https://www.cnblogs.com/Arlar/p/4945760.html
Copyright © 2020-2023  润新知