zoukankan      html  css  js  c++  java
  • Js封装焦点轮换图

    效果预览:

    http://jsfiddle.net/dtdxrk/a6eXP/embedded/result/

    封装了方法 所以浏览器通过测试

    调用方法

    /*
    var focus = new focusBox("focus_pic", {
    v : 0,//幻灯片滚动方向 0=左右 1=垂直
    width : 530,
    height : 180,
    btnId : "focus_btn",//按钮ID
    on : 1,//鼠标事件触发 0=onmouseover 1=onclick
    autoTime : 2000 //播放间隔
    });
    */

      1 <!DOCTYPE HTML>
      2  <html lang="en">
      3  <head>
      4  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      5  <title>原生Js封装焦点轮换图</title>
      6  <style type="text/css">
      7     #focusBox{ width:530px; height:180px;  position:relative; margin:0 auto; zoom:1; overflow:hidden;}
      8     #focusBox img{border:none; margin:0;padding:0;}
      9     #focusBox ul { list-style:none; padding:0; margin:0; position: absolute;}
     10     #focusBox #focus_pic li{ height:180px; width:530px; margin:0; padding:0; float:left}
     11     #focusBox #focus_btn { right:5px; bottom:5px; z-index:2;}
     12     #focusBox #focus_btn li{ float:left;border-radius:20px; font-size:12px; width:25px; height:25px; line-height:25px; font-weight:bold; text-align:center; background:#fff; color:#000; margin-right:2px; cursor:pointer;}
     13     #focusBox #focus_btn li.active{ background:#f60; color:#fff;}
     14  </style>
     15  
     16  <body>
     17 
     18  <div id="focusBox" >
     19    <ul id="focus_pic" style="top:0;left:0;">
     20        <li><a target="_blank" href="#"><img src="1.jpg" width="530" height="180"></a></li>
     21        <li><a target="_blank" href="#"><img src="2.jpg" width="530" height="180"></a></li>
     22        <li><a target="_blank" href="#"><img src="3.jpg" width="530" height="180"></a></li>
     23        <li><a target="_blank" href="#"><img src="4.jpg" width="530" height="180"></a></li>
     24        <li><a target="_blank" href="#"><img src="5.jpg" width="530" height="180"></a></li>
     25    </ul>
     26  </div>
     27  
     28 
     29 <script type="text/javascript">
     30 /*
     31     var focus = new focusBox("focus_pic", {
     32         v : 0,//幻灯片滚动方向 0=左右 1=垂直 
     33         width : 530,
     34         height : 180,   
     35         btnId : "focus_btn",//按钮ID
     36         on : 1,//鼠标事件触发 0=onmouseover 1=onclick
     37         autoTime : 2000 //播放间隔
     38     });
     39 */
     40     function focusBox(id,oo){
     41         this.$ = function(id){return document.getElementById(id)};
     42         this.id = id;
     43         this.oo = oo;//oo.v, oo.width, oo.height, oo.btnId, oo.on, oo.autoTime
     44         this.index = 0;
     45         return this.init();
     46     }
     47 
     48     focusBox.prototype = {
     49         init : function(){//初始化设置
     50             this.picLis = this.$(this.id).getElementsByTagName("li");//图片lis
     51             this.createBtn(this.oo.btnId);//创建数字按钮
     52             this.btnLis = this.$(this.oo.btnId).getElementsByTagName("li");//按钮lis
     53             this.oo.v==0 ? this.$(this.id).style.width = this.oo.width*this.btnLis.length + "px" : this.$(this.id).style.width = this.oo.width +"px";//判断滚动方向 修改ul的宽度
     54             this.btnHover();
     55             this.autoPlay();
     56         },
     57         autoPlay : function(){//定时器
     58             this.moveIndex(this.index);
     59             for(var i=0; i<this.btnLis.length; i++){
     60                 this.btnLis[i].className = "";//清除按钮的样式
     61             }
     62             this.btnLis[this.index].className = "active";
     63         },
     64         moveIndex : function(index){//移动index
     65             clearInterval(this.autoTimer);//清楚定时
     66             var posx = this.oo.v==0 ? -this.index*this.oo.width : 0,
     67                 posy = this.oo.v==1 ? -this.index*this.oo.height : 0,
     68                 that = this;
     69             this.Timer = setInterval(function(){that.moveTo(posx, posy)}, 10);
     70         },
     71         moveTo : function(posx, posy){//移动坐标
     72             var left = parseInt(this.$(this.id).style.left),
     73                 top = parseInt(this.$(this.id).style.top);
     74 
     75             left = left>posx ? left-Math.ceil((left-posx)/10) : left+Math.ceil((posx-left)/10);//当目标位置大于当前位置的时候,一次移动LEFT坐标
     76             top = top>posy ? top-Math.ceil((top-posy)/10) : top+Math.ceil((posy-top)/10);
     77 
     78             this.$(this.id).style.top = top + "px";
     79             this.$(this.id).style.left = left + "px";
     80 
     81             if(left==posx && top==posy){
     82                 clearInterval(this.Timer);
     83                 this.index++;
     84                 if(this.index == this.btnLis.length) this.index = 0;
     85                 var that = this;
     86                 this.autoTimer = setTimeout(function(){that.autoPlay()}, this.oo.autoTime);
     87             }
     88         },
     89         createBtn : function(id){//创建按钮
     90             var ul = document.createElement("ul");
     91                 ul.id = id;
     92             for(var i=0; i<this.picLis.length; i++){        
     93                  var li = document.createElement("li");
     94                  if(i==0){
     95                     li.className = "active";
     96                  }
     97                  li.innerHTML = i+1;
     98                  ul.appendChild(li);
     99             };
    100             this.$(this.id).parentNode.appendChild(ul);//添加到父div下
    101         },
    102         btnHover : function(){//按钮添加事件
    103             for(var i = 0; i <this.btnLis.length; i++) {
    104                 this.btnLis[i].index = i;
    105                 var that = this;
    106                 if(this.oo.on == 0){
    107                     this.btnLis[i].onmouseover = function(){
    108                         clearInterval(that.autoTimer);
    109                         clearInterval(that.Timer);
    110                         that.index=this.index;
    111                         that.autoPlay();
    112                     }
    113                 }else{
    114                     this.btnLis[i].onclick = function(){
    115                         clearInterval(that.autoTimer);
    116                         clearInterval(that.Timer);
    117                         that.index=this.index;
    118                         that.autoPlay();
    119                     }
    120                 };
    121             };
    122 
    123         }
    124 
    125     }
    126 </script>
    127 
    128 <script type="text/javascript">
    129     var focus = new focusBox("focus_pic"/*包裹图片UL的ID*/, {
    130         v : 0,//幻灯片滚动方向 0=左右 1=垂直 
    131         width : 530,
    132         height : 180,   
    133         btnId : "focus_btn",//按钮ID
    134         on : 1,//鼠标事件触发 0=onmouseover 1=onclick
    135         autoTime : 2000 //播放间隔
    136     });
    137 </script>
    138  
    139  </body>
    140  </html>
  • 相关阅读:
    Docker 部署zookeeper3.4
    Redis 3.2 生产环境集群部署
    Prometheus入门到放弃(7)之redis_exporter部署
    Docker部署ELK 7.0.1集群之Kibana安装介绍
    Docker部署ELK 7.0.1集群之Logstash安装介绍
    Docker部署ELK 7.0.1集群之Elasticsearch安装介绍
    Node web 框架
    写一个简单的选择器( 方便小项目使用 )
    Node web 框架
    Node进阶
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/2628704.html
Copyright © 2011-2022 走看看