zoukankan      html  css  js  c++  java
  • 简单焦点轮播(二)(图片可滚动)

    使用函数递归实现图片滑动切换,采用辅助图片实现图片无限滚动等技巧。

    假如前后不加一张图片的话,图片顺序为[1,2,3,4,5],当你点到第 5 张图时,再点“下一张”(就是要回到第 1 张图那里),这时候,你想象下那个画面,会一瞬间“刷刷刷”地闪过中间那几张图片才能到第 1 张图那里,这样,太难看了吧。

    为了解决这个问题,所以要在第 5 张那里加多一张 1 图,图片顺序为 [1,2,3,4,5,1]。当你在第 5 张图点下一张时,图片滚动顺序是这样的:5 ----> (1) ----> 1,(注:中间的那个 1 是指后面多加的 1 图),一旦到了那个“多加的 1 图”,轮播就会瞬间回到 前面的 1 图那里。

    因为都是“1 图”,所以视觉上不会有那个一次“刷刷刷”闪过好几张图片的效果。

    效果如图:

      1 <!DOCTYPE html>
      2 <html>
      3 <head lang="en">
      4     <meta charset="UTF-8">
      5     <title></title>
      6     <style type="text/css">
      7         *{
      8             margin: 0;
      9             padding: 0;
     10             list-style: none;
     11             text-decoration: none;
     12         }
     13         .wrap{
     14             width: 490px;
     15             height: 170px;
     16             margin: 100px auto;
     17             border: 1px solid #000000;
     18             position: relative;
     19             overflow: hidden;
     20         }
     21         #pic{
     22             width: 3430px;
     23             position: absolute;
     24         }
     25         #pic li{
     26             float: left;
     27             height: 170px;
     28         }
     29         #list{
     30             position: absolute;
     31             bottom: 10px;
     32             left:150px ;
     33         }
     34         #list li{
     35             float: left;
     36             width: 15px;
     37             height: 15px;
     38             background: #fff;
     39             margin: 0 10px;
     40             border-radius: 50%;
     41             cursor: pointer;
     42         }
     43         #list .on{
     44             background: #e27a00;
     45         }
     46         .Prev{
     47             top: 30px;
     48             left: 0;
     49         }
     50         .Next{
     51             top: 30px;
     52             right: 0;
     53         }
     54         .Prev,.Next{
     55             position: absolute;
     56             font-size: 80px;
     57             font-weight: bold;
     58             color:#fff ;
     59             -webkit-transition: all 0.35s ease-in-out
     60         }
     61         .Next:hover,
     62         .Prev:hover{
     63             background: #ccc;
     64             background: rgba(204, 204, 204, 0.4);
     65         }
     66 
     67     </style>
     68     <script type="text/javascript">
     69         window.onload=function(){
     70             var wrap=document.getElementById('wrap');
     71             var pic=document.getElementById('pic');
     72             var Li=document.getElementById('list').getElementsByTagName('li');
     73             var prev=document.getElementById('Prev');
     74             var next=document.getElementById('Next');
     75             var animated=false;
     76             var index=0;
     77             var timer=null;
     78             next.onclick=function(){
     79                 if(animated){//如果图片正在滚动时要返回,否则index会变化
     80                     return;
     81                 }
     82                 else{
     83                     index++;
     84                     if(index>=Li.length){
     85                         index=0;
     86                     }
     87                 }
     88 
     89                 showlist();
     90                 if(animated == false){//if(!animated)
     91                     animate(-490);
     92                 }
     93             }
     94             prev.onclick=function(){
     95                 if(animated){
     96                     return;
     97                 }
     98                 else{
     99                     index--;
    100                     if(index<=0){
    101                         index=Li.length-1;
    102                     }
    103                 }
    104 
    105                 showlist();
    106                 if(!animated){//判断其是否滚动完
    107                     animate(490);
    108                 }
    109             }
    110             for(var i=0;i<Li.length;i++){
    111                 Li[i].num=i;
    112                 Li[i].onclick=function(){
    113                     if(this.className=="on"){
    114                         return;
    115                     }
    116                     var offset = -490*(this.num-index);
    117                     if(!animated){
    118                         animate(offset);
    119                     }
    120                     index=this.num;
    121                     showlist();
    122                 }
    123             }
    124             //图片变换
    125             function animate(offset){
    126                 animated=true;
    127                 var newLeft=parseInt(pic.style.left) + offset;
    128                 var time=300//位移总时间
    129                 var interval=10;//位移间隔时间
    130                 var speed=offset/(time/interval);//每次位移量
    131 
    132                 function go(){
    133                     if((speed < 0 && parseInt(pic.style.left) > newLeft )|| (speed > 0 && parseInt(pic.style.left) < newLeft)){
    134                         pic.style.left = parseInt(pic.style.left) + speed + 'px';
    135                         setTimeout(go,interval);
    136                     }else{
    137                         animated=false;
    138                         pic.style.left= newLeft + 'px';
    139                         if(newLeft > -490){
    140                             pic.style.left = -2450 + 'px';
    141                         }
    142                         if(newLeft < -2450){
    143                             pic.style.left = -490  + 'px';
    144                         }
    145                     }
    146                 }
    147                 go();
    148             }
    149             //圆点变换
    150             function showlist(){
    151                 for(var i=0;i<Li.length;i++){
    152                     Li[i].className="";
    153                 }
    154                 Li[index].className="on";
    155             }
    156             //自动播放
    157             function play(){
    158                 timer=setInterval(function(){
    159                     next.onclick();
    160                 },2000);
    161             }
    162             function stop(){
    163                 clearInterval(timer);
    164             }
    165             wrap.onmouseover=stop;
    166             wrap.onmouseout=play;
    167             play();
    168         }
    169     </script>
    170 </head>
    171 <body>
    172 <div class="wrap" id="wrap">
    173     <ul id="pic" style="left: -490px;">
    174         <li><a href="#"><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
    175         <li><a href="#"><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
    176         <li><a href="#"><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt="2"/></a></li>
    177         <li><a href="#"><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt="3"/></a></li>
    178         <li><a href="#"><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt="4"/></a></li>
    179         <li><a href="#"><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
    180         <li><a href="#"><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
    181     </ul>
    182     <ul id="list">
    183         <li class="on"></li>
    184         <li></li>
    185         <li></li>
    186         <li></li>
    187         <li></li>
    188     </ul>
    189     <a href="javascript:;" class="Prev" id="Prev">&lt;</a>
    190     <a href="javascript:;" class="Next" id="Next">&gt;</a>
    191 </div>
    192 </body>
    193 </html>

    同理(点“上一张”),要在 1 图前加一个 5 图。

  • 相关阅读:
    java学习之实例变量初始化
    rip中的连续子网以及不连续子网
    扫描工具
    WScript.SendKeys()的sendkeys发送组合键以及特殊字符
    sql 查询包含字符的数量统计
    leetcode题1Two sum 练习
    vs 2015密钥
    前端 边界圆角
    前端 字体样式
    前端 高级选择器 伪类选择器
  • 原文地址:https://www.cnblogs.com/Lovebugs/p/6369666.html
Copyright © 2011-2022 走看看