jQuery插件jRumble实现网页元素抖动
jRumble,它能让网页上的任意元素抖动起来,在你的网站中使用这个效果会有很大的机率吸引用户的注意力。此插件的效果可以用在链接上,或者div上,你可以设置抖动的范围、XY坐标、抖动幅度等。可设置为当鼠标移动上去抖动或者默认一直抖动,插件可定制性还是蛮高的。PS:此插件在IE中还存在一些小问题
jQueryjRumble是使用方法
<scripttype="text/javascript"src="js/jquery-jrumble.js"></script> <scripttype="text/javascript"> $(document).ready(function(){ $('#demo1').jrumble({ rangeX:2, rangeY:2, rangeRot:1 }); $('#demo2').jrumble({ rangeX:10, rangeY:10, rangeRot:4 }); $('#demo3').jrumble({ rangeX:4, rangeY:0, rangeRot:0 }); $('#demo4').jrumble({ rangeX:0, rangeY:0, rangeRot:5 }); $('#demo5').jrumble({ rumbleSpeed:0 }); $('#demo6').jrumble({ rumbleSpeed:50 }); $('#demo7').jrumble({ rumbleSpeed:100 }); $('#demo8').jrumble({ rumbleSpeed:200 }); $('#demo9').jrumble({ rumbleEvent:'hover' }); $('#demo10').jrumble({ rumbleEvent:'click' }); $('#demo11').jrumble({ rumbleEvent:'mousedown' }); $('#demo12').jrumble({ rumbleEvent:'constant' }); $('#demo13').jrumble({ posX:'left', posY:'top' }); $('#demo14').jrumble({ posX:'right', posY:'top' }); $('#demo15').jrumble({ posX:'left', posY:'bottom' }); $('#demo16').jrumble({ posX:'right', posY:'bottom' }); $('.view-sourcepre').hide(); $('.view-sourcea').toggle(function(){ $(this).siblings('pre').stop(false,true).slideDown(500); $(this).html('HideSource'); },function(){ $(this).siblings('pre').stop(false,true).slideUp(500); $(this).html('ViewSource'); }); }); </script>
jRumble的参数配置
Option Default Description
rangeX 2 Setthehorizontalrumblerange(pixels)
rangeY 2 Settheverticalrumblerange(pixels)
rangeRot 1 Settherotationrange(degrees)
rumbleSpeed 10 Setthespeed/frequencyinmillisecondsoftherumble(lowernumber=faster)
rumbleEvent ‘hover' Settheeventthattriggerstherumble(‘hover',‘click',‘mousedown',‘constant')
posX ‘left' IfusingjRumbleonafixedorabsolutepositionedelement,choose‘left'or‘right'tomatchyourCSS
posY ‘top' IfusingjRumbleonafixedorabsolutepositionedelement,choose‘top'or‘bottom'tomatchyourCSS
jquery-jrumble.js源码
/* jRumblev1.1-http://jackrugile.com/jrumble byJackRugile-http://jackrugile.com Copyright2011,JackRugile MITlicense-http://www.opensource.org/licenses/mit-license.php */ (function($){ $.fn.jrumble=function(options){ //JRUMBLEOPTIONS //--------------------------------- vardefaults={ rangeX:2, rangeY:2, rangeRot:1, rumbleSpeed:10, rumbleEvent:'hover', posX:'left', posY:'top' }; varopt=$.extend(defaults,options); returnthis.each(function(){ //VARIABLEDECLARATION //--------------------------------- $obj=$(this); varrumbleInterval; varrangeX=opt.rangeX; varrangeY=opt.rangeY; varrangeRot=opt.rangeRot; rangeX=rangeX*2; rangeY=rangeY*2; rangeRot=rangeRot*2; varrumbleSpeed=opt.rumbleSpeed; varobjPosition=$obj.css('position'); varobjXrel=opt.posX; varobjYrel=opt.posY; varobjXmove; varobjYmove; varinlineChange; //SETPOSITIONRELATIONIFCHANGED //--------------------------------- if(objXrel==='left'){ objXmove=parseInt($obj.css('left'),10); } if(objXrel==='right'){ objXmove=parseInt($obj.css('right'),10); } if(objYrel==='top'){ objYmove=parseInt($obj.css('top'),10); } if(objYrel==='bottom'){ objYmove=parseInt($obj.css('bottom'),10); } //RUMBLERFUNCTION //--------------------------------- functionrumbler(elem){ varrandBool=Math.random(); varrandX=Math.floor(Math.random()*(rangeX+1))-rangeX/2; varrandY=Math.floor(Math.random()*(rangeY+1))-rangeY/2; varrandRot=Math.floor(Math.random()*(rangeRot+1))-rangeRot/2; //IFINLINE,MAKEINLINE-BLOCKFORROTATION //--------------------------------- if(elem.css('display')==='inline'){ inlineChange=true; elem.css('display','inline-block') } //ENSUREMOVEMENT //--------------------------------- if(randX===0&&rangeX!==0){ if(randBool<.5){ randX=1; } else{ randX=-1; } } if(randY===0&&rangeY!==0){ if(randBool<.5){ randY=1; } else{ randY=-1; } } //RUMBLEBASEDONPOSITION //--------------------------------- if(objPosition==='absolute'){ elem.css({'position':'absolute','-webkit-transform':'rotate('+randRot+'deg)','-moz-transform':'rotate('+randRot+'deg)','-o-transform':'rotate('+randRot+'deg)','transform':'rotate('+randRot+'deg)'}); elem.css(objXrel,objXmove+randX+'px'); elem.css(objYrel,objYmove+randY+'px'); } if(objPosition==='fixed'){ elem.css({'position':'fixed','-webkit-transform':'rotate('+randRot+'deg)','-moz-transform':'rotate('+randRot+'deg)','-o-transform':'rotate('+randRot+'deg)','transform':'rotate('+randRot+'deg)'}); elem.css(objXrel,objXmove+randX+'px'); elem.css(objYrel,objYmove+randY+'px'); } if(objPosition==='static'||objPosition==='relative'){ elem.css({'position':'relative','-webkit-transform':'rotate('+randRot+'deg)','-moz-transform':'rotate('+randRot+'deg)','-o-transform':'rotate('+randRot+'deg)','transform':'rotate('+randRot+'deg)'}); elem.css(objXrel,randX+'px'); elem.css(objYrel,randY+'px'); } }//Endrumblerfunction //EVENTTYPES(rumbleEvent) //--------------------------------- varresetRumblerCSS={'position':objPosition,'-webkit-transform':'rotate(0deg)','-moz-transform':'rotate(0deg)','-o-transform':'rotate(0deg)','transform':'rotate(0deg)'}; if(opt.rumbleEvent==='hover'){ $obj.hover( function(){ varrumblee=$(this); rumbleInterval=setInterval(function(){rumbler(rumblee);},rumbleSpeed); }, function(){ varrumblee=$(this); clearInterval(rumbleInterval); rumblee.css(resetRumblerCSS); rumblee.css(objXrel,objXmove+'px'); rumblee.css(objYrel,objYmove+'px'); if(inlineChange===true){ rumblee.css('display','inline'); } } ); } if(opt.rumbleEvent==='click'){ $obj.toggle(function(){ varrumblee=$(this); rumbleInterval=setInterval(function(){rumbler(rumblee);},rumbleSpeed); },function(){ varrumblee=$(this); clearInterval(rumbleInterval); rumblee.css(resetRumblerCSS); rumblee.css(objXrel,objXmove+'px'); rumblee.css(objYrel,objYmove+'px'); if(inlineChange===true){ rumblee.css('display','inline'); } }); } if(opt.rumbleEvent==='mousedown'){ $obj.bind({ mousedown:function(){ varrumblee=$(this); rumbleInterval=setInterval(function(){rumbler(rumblee);},rumbleSpeed); }, mouseup:function(){ varrumblee=$(this); clearInterval(rumbleInterval); rumblee.css(resetRumblerCSS); rumblee.css(objXrel,objXmove+'px'); rumblee.css(objYrel,objYmove+'px'); if(inlineChange===true){ rumblee.css('display','inline'); } }, mouseout:function(){ varrumblee=$(this); clearInterval(rumbleInterval); rumblee.css(resetRumblerCSS); rumblee.css(objXrel,objXmove+'px'); rumblee.css(objYrel,objYmove+'px'); if(inlineChange===true){ rumblee.css('display','inline'); } } }); } if(opt.rumbleEvent==='constant'){ varrumblee=$(this); rumbleInterval=setInterval(function(){rumbler(rumblee);},rumbleSpeed); } }); }; })(jQuery);
在线演示http://jackrugile.com/jrumble/#demos
源码下载http://jackrugile.com/jrumble/jquery.jrumble.1.3.zip
以上所述就是本文的全部内容了,希望大家能够喜欢。