• 水平滚动轮播图


      1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
      2 "http://www.w3.org/TR/html4/strict.dtd">
      3 
      4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
      5     <head>
      6         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      7         <title>水平轮播图</title>
      8         <meta name="author" content="Administrator" />
      9         <!-- Date: 2014-12-16 -->
     10     <style>
     11             *{margin:0;padding:0;font-size:13px;font-family: microsoft yahei}
     12             li{list-style:none}
     13             #wrap{470px;height:150px;margin:40px auto;   }
     14             #packet{470px;height:150px;overflow:hidden;position:relative}
     15             #packet ul{ position:absolute;top:0;left:0}
     16             #slide li{ 470px;height:150px;position:relative;top:0;left:0;float:left }
     17             #packet ol{position:absolute;right:5px;bottom:5px;}
     18             #packet ol li{20px;height:20px;text-align:center;line-height:20px;background:orange; float: left;margin:0 2px}
     19             #packet ol li.active{background:#E54829}
     20             
     21         </style>
     22         <!-- Date: 2014-12-15 -->
     23         <script src="../../../tween.js"></script>
     24         <script>
     25             window.onload=function(){
     26                  var oPacket=document.getElementById('packet');
     27                  var oUl=document.getElementById('slide');
     28                  var aLi=oUl.getElementsByTagName('li');
     29                  var timer=null;
     30                  var iNow=0;
     31                  var iNow2=0;
     32                  
     33                 // moveWithTime(oUl,{'top':-150},2000);
     34                 
     35                 oUl.style.width = aLi[0].offsetWidth*aLi.length +'px';
     36                 
     37                 /**ol创建**/
     38                 var oL=document.createElement('ol');
     39                 var str='';
     40                 for(var i=0;i<aLi.length;i++){
     41                       str+='<li>'+(i+1)+'</li>';
     42                 }
     43                 oL.innerHTML=str;
     44                 oPacket.appendChild(oL);
     45                 var aLi1=oL.getElementsByTagName('li');
     46                 aLi1[0].className='active';
     47                 
     48                 for(var i=0;i<aLi1.length;i++){
     49                     aLi1[i].index=i;
     50                     aLi1[i].onmouseover=function(){
     51                            
     52                            for(var i=0;i<aLi1.length;i++){
     53                                 aLi1[i].className=''
     54                             }
     55                             this.className='active';
     56                             startMove(oUl,{'left':-470*this.index});
     57                             iNow=this.index;
     58                             iNow2=this.index;
     59                             
     60                             clearInterval(timer);
     61                     }
     62                     aLi1[i].onmouseout=function(){
     63                         timer=setInterval(toRun,2000);
     64                     }
     65                 }
     66                 
     67                  
     68                 timer=setInterval(toRun,2000);
     69                 
     70                 function toRun(){
     71                     if(iNow==aLi.length-1){
     72                         iNow=0;
     73                         aLi[0].style.position='relative';
     74                         aLi[0].style.left=470 * aLi.length +'px'
     75                     }else{
     76                         iNow++
     77                     }
     78                     iNow2++;
     79                     
     80                     for(var i=0;i<aLi1.length;i++){
     81                         aLi1[i].className=''
     82                     }
     83                     aLi1[iNow].className='active';
     84                     
     85                     startMove(oUl,{'left':-470*iNow2},function(){
     86                          clearInterval(timer);
     87                          timer=setInterval(toRun,2000);
     88                          if(iNow==0){
     89                              aLi[0].style.position='static';
     90                              oUl.style.left=0;
     91                              iNow2=0
     92                          }
     93                     })
     94                 }
     95                  
     96                   
     97                   
     98             }
     99             
    100 /**时间版运动框架  结合Tweens()函数  可实现各种运动  匀速,加速,减速等 **/
    101 function startMove(obj,json,times,fx,fn){
    102         
    103         var iCur = {};
    104         var startTime = nowTime();
    105         
    106         if( typeof times == 'undefined' ){
    107             times = 400;
    108             fx = 'linear';
    109         }
    110         
    111         if( typeof times == 'string' ){
    112             if(typeof fx == 'function'){
    113                 fn = fx;
    114             }
    115             fx = times;
    116             times = 400;
    117         }
    118         else if(typeof times == 'function'){
    119             fn = times;
    120             times = 400;
    121             fx = 'linear';
    122         }
    123         else if(typeof times == 'number'){
    124             if(typeof fx == 'function'){
    125                 fn = fx;
    126                 fx = 'linear';
    127             }
    128             else if(typeof fx == 'undefined'){
    129                 fx = 'linear';
    130             }
    131         }
    132         
    133         for(var attr in json){
    134             iCur[attr] = 0;
    135             if( attr == 'opacity' ){
    136                 iCur[attr] = Math.round(getStyle(obj,attr)*100);
    137             }
    138             else{
    139                 iCur[attr] = parseInt(getStyle(obj,attr));
    140             }
    141         }
    142         
    143         clearInterval(obj.timer);
    144         obj.timer = setInterval(function(){
    145             
    146             var changeTime = nowTime();
    147             
    148             //startTime changeTime
    149             
    150             var scale = 1-Math.max(0,startTime + times - changeTime)/times; //2000 - 0 -> 1-0 -> 0-1
    151             
    152             for(var attr in json){
    153                 
    154                 var value = Tween[fx](scale*times,iCur[attr],json[attr] - iCur[attr],times);
    155                 
    156                 if(attr == 'opacity'){
    157                     obj.style.filter = 'alpha(opacity='+ value +')';
    158                     obj.style.opacity = value/100;
    159                 }
    160                 else{
    161                     obj.style[attr] = value + 'px';
    162                 }
    163                 
    164             }
    165             
    166             if(scale == 1){
    167                 clearInterval(obj.timer);
    168                 if(fn){
    169                     fn.call(obj);
    170                 }
    171             }
    172             
    173             
    174         },30);
    175         
    176         
    177         function nowTime(){
    178             return (new Date()).getTime();
    179         }
    180         
    181         
    182     }
    183     
    184     function getStyle(obj,attr){
    185         if(obj.currentStyle){
    186             return obj.currentStyle[attr];
    187         }
    188         else{
    189             return getComputedStyle(obj,false)[attr];
    190         }
    191     }
    192     
    193     
    194     var Tween = {
    195         linear: function (t, b, c, d){  //匀速
    196             return c*t/d + b;
    197         },
    198         easeIn: function(t, b, c, d){  //加速曲线
    199             return c*(t/=d)*t + b;
    200         },
    201         easeOut: function(t, b, c, d){  //减速曲线
    202             return -c *(t/=d)*(t-2) + b;
    203         },
    204         easeBoth: function(t, b, c, d){  //加速减速曲线
    205             if ((t/=d/2) < 1) {
    206                 return c/2*t*t + b;
    207             }
    208             return -c/2 * ((--t)*(t-2) - 1) + b;
    209         },
    210         easeInStrong: function(t, b, c, d){  //加加速曲线
    211             return c*(t/=d)*t*t*t + b;
    212         },
    213         easeOutStrong: function(t, b, c, d){  //减减速曲线
    214             return -c * ((t=t/d-1)*t*t*t - 1) + b;
    215         },
    216         easeBothStrong: function(t, b, c, d){  //加加速减减速曲线
    217             if ((t/=d/2) < 1) {
    218                 return c/2*t*t*t*t + b;
    219             }
    220             return -c/2 * ((t-=2)*t*t*t - 2) + b;
    221         },
    222         elasticIn: function(t, b, c, d, a, p){  //正弦衰减曲线(弹动渐入)
    223             if (t === 0) { 
    224                 return b; 
    225             }
    226             if ( (t /= d) == 1 ) {
    227                 return b+c; 
    228             }
    229             if (!p) {
    230                 p=d*0.3; 
    231             }
    232             if (!a || a < Math.abs(c)) {
    233                 a = c; 
    234                 var s = p/4;
    235             } else {
    236                 var s = p/(2*Math.PI) * Math.asin (c/a);
    237             }
    238             return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    239         },
    240         elasticOut: function(t, b, c, d, a, p){    //正弦增强曲线(弹动渐出)
    241             if (t === 0) {
    242                 return b;
    243             }
    244             if ( (t /= d) == 1 ) {
    245                 return b+c;
    246             }
    247             if (!p) {
    248                 p=d*0.3;
    249             }
    250             if (!a || a < Math.abs(c)) {
    251                 a = c;
    252                 var s = p / 4;
    253             } else {
    254                 var s = p/(2*Math.PI) * Math.asin (c/a);
    255             }
    256             return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    257         },    
    258         elasticBoth: function(t, b, c, d, a, p){
    259             if (t === 0) {
    260                 return b;
    261             }
    262             if ( (t /= d/2) == 2 ) {
    263                 return b+c;
    264             }
    265             if (!p) {
    266                 p = d*(0.3*1.5);
    267             }
    268             if ( !a || a < Math.abs(c) ) {
    269                 a = c; 
    270                 var s = p/4;
    271             }
    272             else {
    273                 var s = p/(2*Math.PI) * Math.asin (c/a);
    274             }
    275             if (t < 1) {
    276                 return - 0.5*(a*Math.pow(2,10*(t-=1)) * 
    277                         Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    278             }
    279             return a*Math.pow(2,-10*(t-=1)) * 
    280                     Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
    281         },
    282         backIn: function(t, b, c, d, s){     //回退加速(回退渐入)
    283             if (typeof s == 'undefined') {
    284                s = 1.70158;
    285             }
    286             return c*(t/=d)*t*((s+1)*t - s) + b;
    287         },
    288         backOut: function(t, b, c, d, s){
    289             if (typeof s == 'undefined') {
    290                 s = 3.70158;  //回缩的距离
    291             }
    292             return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
    293         }, 
    294         backBoth: function(t, b, c, d, s){
    295             if (typeof s == 'undefined') {
    296                 s = 1.70158; 
    297             }
    298             if ((t /= d/2 ) < 1) {
    299                 return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
    300             }
    301             return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
    302         },
    303         bounceIn: function(t, b, c, d){    //弹球减振(弹球渐出)
    304             return c - Tween['bounceOut'](d-t, 0, c, d) + b;
    305         },       
    306         bounceOut: function(t, b, c, d){
    307             if ((t/=d) < (1/2.75)) {
    308                 return c*(7.5625*t*t) + b;
    309             } else if (t < (2/2.75)) {
    310                 return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
    311             } else if (t < (2.5/2.75)) {
    312                 return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
    313             }
    314             return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
    315         },      
    316         bounceBoth: function(t, b, c, d){
    317             if (t < d/2) {
    318                 return Tween['bounceIn'](t*2, 0, c, d) * 0.5 + b;
    319             }
    320             return Tween['bounceOut'](t*2-d, 0, c, d) * 0.5 + c*0.5 + b;
    321         }
    322     }
    323             
    324             
    325         </script>
    326     </head>
    327     <body>
    328         <div id="wrap">
    329             <div id="packet">
    330                 <ul id="slide">
    331                         <li><img src="images/1.jpg"/></li>
    332                         <li><img src="images/2.jpg"/></li>
    333                         <li><img src="images/3.jpg"/></li>
    334                         <li><img src="images/4.jpg"/></li>
    335                         <li><img src="images/5.jpg"/></li>
    336                 </ul>
    337             </div>
    338         </div>
    339     </body>
    340 </html>
  • 相关阅读:
    Git查看、删除远程分支和tag(转自:http://zengrong.net/post/1746.htm)
    设计模式工厂模式
    Android SystemProperties和Settings.System介绍(转自http://www.linuxidc.com/Linux/201108/40887.htm)
    设计模式原型模式
    设计模式建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)
    读取其他程序的sharedpreference
    eclipse下导入android源码
    国外程序员推荐:每个程序员都应读的书(转自:http://blog.jobbole.com/5886/)
    Android系统如何实现UI的自适应(在res下找对应目录)【转】
    Android Provision (Setup Wizard) (转自:http://blog.csdn.net/thl789/article/details/7803439)
  • 原文地址:https://www.cnblogs.com/webskill/p/4167231.html
Copyright © 2020-2023  润新知