• 原生js-焦点图轮播


    首先是html实现页面结构及主程序

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>基本动画-焦点图轮播</title>
     6 <style type="text/css">
     7 #outer{ width:450px; height:230px; position:relative; margin:50px auto; background:pink; overflow:hidden;}
     8 #inner{ width:2700px; height:230px; position:absolute; top:0px; left:0;}
     9 #inner div{ width:450px; height:230px; float:left; line-height:230px; text-align:center; font-size:36px; font-weight:bold; color:#fff; background:red;}
    10 ul#btn{ margin:0; padding:0; list-style:none; position:absolute; bottom:15px; right:15px; height:30px; width:230px;}
    11 ul#btn li{ float:left; width:25px; margin-right:5px; height:25px; border:4px solid orange; border-radius:50%; font-size:24px; font-weight:bold; line-height:25px; text-align:center; background:#366; cursor:pointer; -webkit-user-select:none;  }
    12 ul#btn li.current{ background:white;}
    13 </style>
    14 </head>
    15 
    16 <body>
    17 <div id="outer">
    18     <div id="inner">
    19         <div>111111111111</div>
    20         <div style="background:yellow; color:blue">222222222222</div>
    21         <div style="background:black;">333333333333</div>
    22         <div style="background:purple;">444444444444</div>
    23         <div style="background:blue;">555555555555</div>
    24         <div>111111111111</div>
    25     
    26     </div>
    27     <ul id="btn">
    28         <li class="current" >1</li>
    29         <li >2</li>
    30         <li >3</li>
    31         <li >4</li>
    32         <li >5</li>
    33     </ul>
    34 </div>
    35 </body>
    36 </html>
    37 <script src="move.js"></script>
    38 <script>
    39 var oLis=document.getElementById('btn').getElementsByTagName('li');
    40 var oInner=document.getElementById('inner');
    41 for(var i=0;i<oLis.length;i++){
    42     oLis.item(i).n=i;
    43     oLis.item(i).onclick=function(){
    44         move(oInner,"left",this.n*-450);
    45     }
    46 }
    47 var step=0;
    48 function autoMove(){
    49     if(step==oLis.length){//第六个图片对应是第一个li
    50         oLis.item(0).className="";
    51     }else{//正常情况下,step在累加之前,总是表示上一个LI的索引
    52         oLis.item(step).className="";
    53     }
    54     step++;
    55     if(step==oLis.length+1){//如果走到了第六张,则把坐标切换到第一张上来。
    56         //alert(1);//暂停一下,更能理解原理
    57         oInner.style.left=0;//切换坐标
    58         step=1;    //然后再从第一张往第二张上走,所以让step=1;
    59     }
    60     if(step==5){//第5个索引(就是第六张)对应的是第一张DIV,所以这儿要做个判断
    61         oLis.item(0).className="current";
    62     }else{//正常情况下走到第几张,就让对应的li切换背景
    63         oLis.item(step).className="current";
    64     }
    65     move(oInner,"left",step*-450);
    66 }
    67 window.setInterval(autoMove,2000);
    68 </script>

    接下来在move.js里实现辅助函数

     1 function move(ele,attr,target,fnCallback){
     2     clearInterval(ele[attr+"timer"]);
     3     function _move(){//闭包方法
     4         var cur=css(ele,attr);//当前位置
     5         var nSpeed=(target-cur)/10;
     6         nSpeed=nSpeed>0?Math.ceil(nSpeed):Math.floor(nSpeed);
     7         css(ele,attr,cur+nSpeed);
     8         if(nSpeed===0){
     9             clearInterval(ele[attr+"timer"]);    
    10             ele[attr+"timer"]=null;
    11             if(typeof fnCallback=="function"){
    12                 fnCallback.call(ele);
    13                 //用call去执行fnCallback,则可以让fnCallback在运行的时候,里面的this关键字指向当前运动的这个元素    
    14             }
    15             //ele.style.backgroundColor="green";
    16         }
    17     }
    18     ele[attr+"timer"]=window.setInterval(_move,20);    
    19 }
    20 
    21 function css(ele,attr,val){//如果传两个参数,则是取值。三个参数,则赋值
    22     if(typeof val=="undefined"){
    23         try{
    24             return parseFloat(window.getComputedStyle(ele,null)[attr]);
    25         }catch(e){
    26             return parseFloat(ele.currentStyle[attr]);
    27         }
    28     }else if(typeof val=="number"){
    29         if(attr=="opacity"){
    30             ele.style.opacity=val;
    31             ele.style.filter="alpha(opacity="+val*100+")";
    32         }else{
    33             ele.style[attr]=val+"px";
    34         }
    35     }    
    36 }
  • 相关阅读:
    .net 2.0 使用linq
    重建索引解决mssql表查询超时的问题
    倾斜摄影自动化建模成果的数据组织和单体化
    cesium导入3D模型(obj转gltf)
    github
    JSP转发和重定向的区别
    mysql压缩版的安装教程
    JSP内置对象
    运行jsp常犯的错误
    递归的几个demo
  • 原文地址:https://www.cnblogs.com/tomorrowdemo/p/3842151.html
Copyright © 2020-2023  润新知