zoukankan      html  css  js  c++  java
  • 一个很炫的图片切换脚本

    <style type="text/css">
    .ss{
    border:1px solid #000000;
    height:100px;
    100px;
    position:absolute;
    left:100px;
    top:240px;
    z-index:1;
    border:1px solid #FFFFFF;
    }
    
    </style>
    <body style="background-color:#000000;color:#FFFFFF; font-size:12px;">
    <div>循环播放<input id='a1' value="确定" type="button" onClick="cycle(this)" disabled="disabled"></div>
    <div>键盘操作(left,rigth键====>‘→’‘←’)<input id='a2' value="确定" type="button" onClick="keyboard(this)"></div>
    <script>
    Array.prototype.end  =function(){return (this.length) ? this[this.length - 1] : null;};
    function $(Id){return document.getElementById(Id)};
    function create(elm,parent,fn){var element = document.createElement(elm);parent.appendChild(element);if(fn)fn(element);};
    var CurrentStyle = function(element){return element.currentStyle || document.defaultView.getComputedStyle(element, null);};
    function foreach(arr,fn){for(var i=0;i<arr.length;i++){arr[i]=fn(arr[i])}}
    function parseint(elm,type){
    	 switch(type)
    		{
    		case 1:
    		   return parseInt(CurrentStyle(elm).width);
    		   break;
    		case 2:
    		   return parseInt(CurrentStyle(elm).height);
    		   break;
    		case 3:
    		   return parseInt(CurrentStyle(elm).left);
    		   break;
    		case 4:
    		   return parseInt(CurrentStyle(elm).top);  
    		   break  
    		default:
    		   return ;
    		}
    }
    var Tween = {
        Quintic:{
    			easeOut: function(t,b,c,d){
    				 //return c*((t=t/d-1)*t*t*t*t + 1) + b;
    			     return c*t/d + b;
    			}
        }
    }
    var extend = function()
     {
          var args = arguments;
          if(!args[1])args = [this,args[0]];                                       
          for(var property in args[1])args[0][property] = args[1][property];         
          return args[0];
     };
     var Class = function(properties){
    	   var _class = function(){return (arguments[0] !== null && this.initialize && typeof(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;};
    	   _class.prototype = properties;
    	   return _class;
     };   
     
    	var  imgswitch = new Class({
    		options:{
    			range   :300, //扩大的范围;
    			step    :30,
                t       :0,
    			time    :10,
    			zindex  :10,
    			leftdiff:150    //图片的间距 
    		},
    		initialize:function(data,dif){
    		    var self      = this; 
    			this.data     = data;
    			this.dif      = dif;
    			this.lock     = false;
    			this.timer    = null;
    			this.position = [];
    			this.direction= true;
    			this.current  = new Array(4);
    ////////////////////////////////////////////////////////////////////////
    			this.range    = this.options.range;
    			this.step     = document.all?this.options.step:this.options.step-20;
    			this.t        = this.options.t;
    			this.time     = this.options.time;
    			this.zindex   = this.options.zindex;
    			this.leftdiff = this.options.leftdiff;
    ////////////////////////////////////////////////////////////////////////			
    			for(var i=0; i<this.data.length;i++)  
                    {
                       create('img',document.body,function(elm){
    					   with(elm){id = self.data[i].id;className= self.data[i].className;src= self.data[i].src;style.left = parseint($(self.data[0].id),3) +i*self.leftdiff}		  
    					   self.position.push(parseInt(CurrentStyle(elm).left));
                       })
                    }
    			this.original = [parseint($(this.data[0].id),1),parseint($(this.data[0].id),2),parseint($(this.data[0].id),3),parseint($(this.data[0].id),4)];
    			this.gap  = parseint($(this.data[1].id),3)-parseint($(this.data[0].id),3);
    ////////////////////////////////////////////////////////////////////////////////////////////////////	
                 //设置最后一张图片的位置 长度 高度		
    			 var data =$(this.data.end().id);
    			 data.style.height = this.current[1] =  parseint(data,2)+this.range+'px';
    			 data.style.width  = this.current[0] =  parseint(data,1)+this.range+'px';
    			 data.style.left   = this.current[2] =  this.position[0] +(parseint($(this.data[this.data.length-2].id),3)-parseint($(this.data[0].id),3)-this.range)/2;
    			 data.style.top    = this.current[3] =  parseint(data,4) - this.range/2 ;
    			 data.zIndex       = this.zindex;
    ///////////////////////////////////////////////////////////////////////////////////////////////////			 
    			 this.position[this.position.length-1]=parseint(data,3);
    			 foreach(this.current,function(o){return o=parseInt(o) });
    		},
    		start:function(arg){;
    		     if(this.lock){return}
    			 else{this.lock ='true'}
    			 this.direction = arg;
    			 this.gap = (this.direction?Math.abs(this.gap):(-1)*(Math.abs(this.gap)))
    			 this.move();
    		},
    		fun:function(){
    			this.movep();this.movef();this.movel();
    		},
    		movep:function(){
    			var j = this.direction?(-1):0
    			for(var i = 1+j ; i<this.data.length-1+j; i++)
    				{$(this.data[i].id).style.left = this.position[i] + this.moveto(this.t,0,this.gap,this.step)}
    		},
    		movef:function(){                         //中间的图移动
    			 var data = $(this.data.end().id);
    			 data.style.left   = this.direction?(this.position[this.position.length-1] + this.moveto(this.t,0,(this.position[0]-this.current[2]),this.step)):(this.current[2] +this.moveto(this.t,0,(this.position[this.position.length-2]-this.current[2]),this.step))
    			 data.style.top    = this.moveto(this.t,this.current[3],(this.original[3]-this.current[3]),this.step);
    			 data.style.width  = this.moveto(this.t,this.current[0],(-1*this.range),this.step);
    			 data.style.height = this.moveto(this.t,this.current[1],(-1*this.range),this.step);
    			 data.style.zIndex = this.moveto(this.t,this.zindex,(1-this.zindex),this.step);
    		},
    		movel:function(){                       //两边的图片移动
    			 var data = this.direction?$(this.data[this.data.length-2].id):$(this.data[0].id)
    			 data.style.left = this.direction?(this.position[this.position.length-2] + this.moveto(this.t,0,(this.current[2]-this.position[this.position.length-2]),this.step)):(this.position[0] + this.moveto(this.t,0,(this.current[2]-this.position[0]),this.step))
    			 data.style.width  = this.moveto(this.t,this.original[0],this.range,this.step);
    			 data.style.height = this.moveto(this.t,this.original[1],this.range,this.step);
    			 data.style.top    = this.moveto(this.t,this.original[3],(this.current[3]-this.original[3]),this.step);
    			 data.style.zIndex = this.moveto(this.t,3,(this.zindex-1),this.step);			 
    		},
    		move:function(){
    		    var self  = this;
    			this.fun();
    			if(++this.t>this.step)
    			 {
    				  clearTimeout(this.timer);this.t=0;this.lock=false;
    				  this.direction?this.data.splice(0,0,this.data.pop()):this.data.push(this.data.shift())
    			 }
    			else
    			 {this.timer = setTimeout(function(){self.move()},this.time)}
    		},
    	   moveto:function(t,b,c,d){
    		   return Math.round(Tween.Quintic.easeOut(t,b,c,d));
    	   }
    	})
    	
    	var arr = [{id:'img1',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_1.gif'},{id:'img2',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_2.gif'},{id:'img3',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_7.gif'},{id:'img4',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_8.gif'},{id:'img5',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_10.gif'},{id:'img6',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_11.gif'},{id:'img7',className:'ss',src:'http://images.cnblogs.com/cnblogs_com/wtcsy/192373/r_12.gif'}];
    	var a = new imgswitch(arr,4000);
    	function addListener(element,e,fn){ element.addEventListener?element.addEventListener(e,fn,false):element.attachEvent("on" + e,fn)} 
     function removeListener(element,e,fn){ element.removeEventListener?element.removeEventListener(e,fn,false):element.detachEvent("on" + e,fn)}
    	var timer =null
    	function cycle(obj){
    	    obj.disabled="disabled"
    		$('a2').disabled = ''
    		timer = setInterval(function(){a.move()},4000)
    		removeListener(document,'keydown',an)
    	}
    	
    	function keyboard(obj){
           	obj.disabled="disabled"
    		$('a1').disabled = ''
    		clearTimeout(timer)
    		addListener(document,'keydown',an)
    	}
    	 function an(event){
    		 var e = event || window.event  
    		if((e.charCode||e.keyCode)==37)
    		{a.start(true);}
    		if((e.charCode||e.keyCode)==39)
    		{a.start(false);}
    	}
    	timer = setInterval(function(){a.move()},4000)
    </script>
    </body>
    

      

  • 相关阅读:
    Swift学习笔记(7)--控制流
    安装APK时报 Installation failed with message Failed to finalize session : INSTALL_FAILED_USER_RESTRICTED: Invalid apk.
    Android Notification 的四种使用方式
    Socket.io
    socket
    socket.io 中文手册 socket.io 中文文档
    Android中的CardView使用
    TabLayout实现底部导航栏(2)
    使用PagerSlidingTabStrip实现顶部导航栏
    TabLayout实现顶部导航栏(1)
  • 原文地址:https://www.cnblogs.com/Karson001/p/3060375.html
Copyright © 2011-2022 走看看