• 淘宝轮播图


    先上图一张:

      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>5.轮播图-杜鹏</title>
      8         <meta name="author" content="Administrator" />
      9         <!-- Date: 2014-12-16 -->
     10     <link href="miaov_style.css" rel="stylesheet" type="text/css" />
     11 
     12 <script>
     13 
     14 window.onload = function(){
     15     var aLi = document.getElementsByTagName('ol')[0].getElementsByTagName('li');
     16     var oUl = document.getElementsByTagName('ul')[0];
     17     var aLi2 = oUl.getElementsByTagName('li');
     18     var iNow = 0;
     19     var iNow2 = 0;
     20     var timer = null;
     21     
     22     for(var i=0;i<aLi.length;i++){
     23         aLi[i].index = i;
     24         aLi[i].onmouseover = function(){
     25             for(var i=0;i<aLi.length;i++){
     26                 aLi[i].className = '';
     27             };
     28             this.className = 'active';
     29             
     30             startMove(oUl,{'top' : -150*this.index});
     31             iNow = this.index;
     32             iNow2 = this.index;
     33             clearInterval(timer);
     34         };
     35         
     36         aLi[i].onmouseout = function(){
     37             timer = setInterval(toRun,2000);
     38         };
     39     }
     40     
     41     timer = setInterval(toRun,1000);
     42     
     43     function toRun(){
     44         if(iNow==aLi.length-1){
     45             iNow = 0;
     46             aLi2[0].style.position = 'relative';
     47             aLi2[0].style.top = 150 * aLi2.length + 'px';
     48         }
     49         else{
     50             iNow++;
     51         }
     52         
     53         iNow2++;
     54         //console.log( aLi2[0].offsetTop );
     55         
     56         for(var i=0;i<aLi.length;i++){
     57             aLi[i].className = '';
     58         };
     59         aLi[iNow].className = 'active';    
     60             
     61         startMove(oUl,{ top : -150 * iNow2},function(){
     62             
     63             clearInterval(timer);
     64             timer = setInterval(toRun,2000);
     65             
     66             if(iNow==0){
     67                 aLi2[0].style.position = 'static';
     68                 oUl.style.top = 0;
     69                 iNow2 = 0;
     70             }
     71             
     72         });
     73         
     74         console.log( iNow +'-'+ iNow2 )
     75     }
     76     
     77 };
     78 
     79 function startMove(obj,json,times,fx,fn){
     80         
     81         var iCur = {};
     82         var startTime = nowTime();
     83         
     84         if( typeof times == 'undefined' ){
     85             times = 400;
     86             fx = 'linear';
     87         }
     88         
     89         if( typeof times == 'string' ){
     90             if(typeof fx == 'function'){
     91                 fn = fx;
     92             }
     93             fx = times;
     94             times = 400;
     95         }
     96         else if(typeof times == 'function'){
     97             fn = times;
     98             times = 400;
     99             fx = 'linear';
    100         }
    101         else if(typeof times == 'number'){
    102             if(typeof fx == 'function'){
    103                 fn = fx;
    104                 fx = 'linear';
    105             }
    106             else if(typeof fx == 'undefined'){
    107                 fx = 'linear';
    108             }
    109         }
    110         
    111         for(var attr in json){
    112             iCur[attr] = 0;
    113             if( attr == 'opacity' ){
    114                 iCur[attr] = Math.round(getStyle(obj,attr)*100);
    115             }
    116             else{
    117                 iCur[attr] = parseInt(getStyle(obj,attr));
    118             }
    119         }
    120         
    121         clearInterval(obj.timer);
    122         obj.timer = setInterval(function(){
    123             
    124             var changeTime = nowTime();
    125             
    126             //startTime changeTime
    127             
    128             var scale = 1-Math.max(0,startTime + times - changeTime)/times; //2000 - 0 -> 1-0 -> 0-1
    129             
    130             for(var attr in json){
    131                 
    132                 var value = Tween[fx](scale*times,iCur[attr],json[attr] - iCur[attr],times);
    133                 
    134                 if(attr == 'opacity'){
    135                     obj.style.filter = 'alpha(opacity='+ value +')';
    136                     obj.style.opacity = value/100;
    137                 }
    138                 else{
    139                     obj.style[attr] = value + 'px';
    140                 }
    141                 
    142             }
    143             
    144             if(scale == 1){
    145                 clearInterval(obj.timer);
    146                 if(fn){
    147                     fn.call(obj);
    148                 }
    149             }
    150             
    151             
    152         },30);
    153         
    154         
    155         function nowTime(){
    156             return (new Date()).getTime();
    157         }
    158         
    159         
    160     }
    161     
    162     function getStyle(obj,attr){
    163         if(obj.currentStyle){
    164             return obj.currentStyle[attr];
    165         }
    166         else{
    167             return getComputedStyle(obj,false)[attr];
    168         }
    169     }
    170     
    171     
    172     var Tween = {
    173         linear: function (t, b, c, d){  //匀速
    174             return c*t/d + b;
    175         },
    176         easeIn: function(t, b, c, d){  //加速曲线
    177             return c*(t/=d)*t + b;
    178         },
    179         easeOut: function(t, b, c, d){  //减速曲线
    180             return -c *(t/=d)*(t-2) + b;
    181         },
    182         easeBoth: function(t, b, c, d){  //加速减速曲线
    183             if ((t/=d/2) < 1) {
    184                 return c/2*t*t + b;
    185             }
    186             return -c/2 * ((--t)*(t-2) - 1) + b;
    187         },
    188         easeInStrong: function(t, b, c, d){  //加加速曲线
    189             return c*(t/=d)*t*t*t + b;
    190         },
    191         easeOutStrong: function(t, b, c, d){  //减减速曲线
    192             return -c * ((t=t/d-1)*t*t*t - 1) + b;
    193         },
    194         easeBothStrong: function(t, b, c, d){  //加加速减减速曲线
    195             if ((t/=d/2) < 1) {
    196                 return c/2*t*t*t*t + b;
    197             }
    198             return -c/2 * ((t-=2)*t*t*t - 2) + b;
    199         },
    200         elasticIn: function(t, b, c, d, a, p){  //正弦衰减曲线(弹动渐入)
    201             if (t === 0) { 
    202                 return b; 
    203             }
    204             if ( (t /= d) == 1 ) {
    205                 return b+c; 
    206             }
    207             if (!p) {
    208                 p=d*0.3; 
    209             }
    210             if (!a || a < Math.abs(c)) {
    211                 a = c; 
    212                 var s = p/4;
    213             } else {
    214                 var s = p/(2*Math.PI) * Math.asin (c/a);
    215             }
    216             return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    217         },
    218         elasticOut: function(t, b, c, d, a, p){    //正弦增强曲线(弹动渐出)
    219             if (t === 0) {
    220                 return b;
    221             }
    222             if ( (t /= d) == 1 ) {
    223                 return b+c;
    224             }
    225             if (!p) {
    226                 p=d*0.3;
    227             }
    228             if (!a || a < Math.abs(c)) {
    229                 a = c;
    230                 var s = p / 4;
    231             } else {
    232                 var s = p/(2*Math.PI) * Math.asin (c/a);
    233             }
    234             return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    235         },    
    236         elasticBoth: function(t, b, c, d, a, p){
    237             if (t === 0) {
    238                 return b;
    239             }
    240             if ( (t /= d/2) == 2 ) {
    241                 return b+c;
    242             }
    243             if (!p) {
    244                 p = d*(0.3*1.5);
    245             }
    246             if ( !a || a < Math.abs(c) ) {
    247                 a = c; 
    248                 var s = p/4;
    249             }
    250             else {
    251                 var s = p/(2*Math.PI) * Math.asin (c/a);
    252             }
    253             if (t < 1) {
    254                 return - 0.5*(a*Math.pow(2,10*(t-=1)) * 
    255                         Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    256             }
    257             return a*Math.pow(2,-10*(t-=1)) * 
    258                     Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
    259         },
    260         backIn: function(t, b, c, d, s){     //回退加速(回退渐入)
    261             if (typeof s == 'undefined') {
    262                s = 1.70158;
    263             }
    264             return c*(t/=d)*t*((s+1)*t - s) + b;
    265         },
    266         backOut: function(t, b, c, d, s){
    267             if (typeof s == 'undefined') {
    268                 s = 3.70158;  //回缩的距离
    269             }
    270             return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
    271         }, 
    272         backBoth: function(t, b, c, d, s){
    273             if (typeof s == 'undefined') {
    274                 s = 1.70158; 
    275             }
    276             if ((t /= d/2 ) < 1) {
    277                 return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
    278             }
    279             return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
    280         },
    281         bounceIn: function(t, b, c, d){    //弹球减振(弹球渐出)
    282             return c - Tween['bounceOut'](d-t, 0, c, d) + b;
    283         },       
    284         bounceOut: function(t, b, c, d){
    285             if ((t/=d) < (1/2.75)) {
    286                 return c*(7.5625*t*t) + b;
    287             } else if (t < (2/2.75)) {
    288                 return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
    289             } else if (t < (2.5/2.75)) {
    290                 return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
    291             }
    292             return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
    293         },      
    294         bounceBoth: function(t, b, c, d){
    295             if (t < d/2) {
    296                 return Tween['bounceIn'](t*2, 0, c, d) * 0.5 + b;
    297             }
    298             return Tween['bounceOut'](t*2-d, 0, c, d) * 0.5 + c*0.5 + b;
    299         }
    300     }
    301 
    302 
    303 </script>
    304 <script>
    305 
    306 /*window.onblur = function(){};
    307 window.onfocus = function(){};
    308 */
    309 
    310 </script>
    311 </head>
    312 
    313 <body>
    314 
    315 <div id="play">
    316     <div class="packet"><!-- 为了消除offsetXXX的兼容性问题 -->
    317         <ol>
    318             <li class="active">1</li>
    319             <li>2</li>
    320             <li>3</li>
    321             <li>4</li>
    322             <li>5</li>
    323         </ol>
    324         <ul>
    325             <li><a href="#"><img src="images/1.jpg" alt="广告一" /></a></li>
    326           <li><a href="#"><img src="images/2.jpg" alt="广告二" /></a></li>
    327           <li><a href="#"><img src="images/3.jpg" alt="广告三" /></a></li>
    328           <li><a href="#"><img src="images/4.jpg" alt="广告四" /></a></li>
    329             <li><a href="#"><img src="images/5.jpg" alt="广告五" /></a></li>
    330         </ul>
    331     </div>
    332 </div>
    333 
    334 </body>
    335 </html>

    css

     3 * { padding: 0; margin: 0; }
     4 li { list-style: none; }
     5 img { border: none; }
     6 
     7 body { background: #ecfaff; }
     8 
     9 #play {  470px; height: 150px; overflow: hidden; border: 1px solid #d8d8d8; margin: 100px auto 0; }
    10 .packet { 470px; height: 150px; position: relative; overflow:-hidden;}
    11 ol { position: absolute; right: 5px; bottom: 5px; z-index: 2; }
    12 ol li { float: left; margin-right: 3px; display: inline; cursor: pointer; background: #fcf2cf; border: 1px solid #f47500; padding: 2px 6px; color: #d94b01; font-family: arial; font-size: 12px; }
    13 .active { padding: 3px 8px; font-weight: bold; color: #ffffff; background: #ffb442; position: relative; bottom: 2px; }
    14 
    15 ul { position: absolute; top: 0px; left: 0px; z-index: 1; background:white;  470px; height: 150px; }
    16 ul li { position:relative;  470px; height: 150px; top:0px; left:0px; }
    17 ul img { float: left;  470px; height: 150px; }
  • 相关阅读:
    后台数据显示在网页(通过ajax获取内容)二
    获取后台数据显示在网页(一)
    访问后台方法
    input的placeholder字体大小无法修改?
    cssText()
    flex属性值----弹性盒子布局
    多栏布局
    怎么在ng-repeat生成的元素上操作dom
    css实现一行文字居中,多行文字左对齐
    变形属性 transform
  • 原文地址:https://www.cnblogs.com/webskill/p/4166703.html
Copyright © 2020-2023  润新知