图片切换效果

       
       
< style type ="text/css" > .ss { border : 1px solid #000000 ; height : 100px ; width : 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 / 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 >
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值