forked from logoove/weui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
marquee.js
2 lines (2 loc) · 1.67 KB
/
marquee.js
1
2
(function($){$.fn.kxbdMarquee=function(options){var opts=$.extend({},$.fn.kxbdMarquee.defaults,options);return this.each(function(){var $marquee=$(this);var _scrollObj=$marquee.get(0);var scrollW=$marquee.width();var scrollH=$marquee.height();var $element=$marquee.children();var $kids=$element.children();var scrollSize=0;var _type=(opts.direction=="left"||opts.direction=="right")?1:0;$element.css(_type?"width":"height",10000);if(opts.isEqual){if(_type){scrollSize=$kids.length*$kids.width();}else{scrollSize=$kids.length*$kids.height();}}else{$kids.each(function(){if(_type){scrollSize+=$(this).width();}else{scrollSize+=$(this).height();}});};if(scrollSize<(_type?scrollW:scrollH)){return;};$element.append($kids.clone()).css(_type?"width":"height",scrollSize*2);var numMoved=0;function scrollFunc(){var _dir=(opts.direction=="left"||opts.direction=="right")?"scrollLeft":"scrollTop";if(opts.loop>0){numMoved+=opts.scrollAmount;if(numMoved>scrollSize*opts.loop){_scrollObj[_dir]=0;return clearInterval(moveId);};};if(opts.direction=="left"||opts.direction=="up"){var newPos=_scrollObj[_dir]+opts.scrollAmount;if(newPos>=scrollSize){newPos-=scrollSize;}
_scrollObj[_dir]=newPos;}else{var newPos=_scrollObj[_dir]-opts.scrollAmount;if(newPos<=0){newPos+=scrollSize;};_scrollObj[_dir]=newPos;};};var moveId=setInterval(scrollFunc,opts.scrollDelay);$marquee.mouseover(function(){clearInterval(moveId);});$marquee.mouseout(function(){clearInterval(moveId);moveId=setInterval(scrollFunc,opts.scrollDelay);});});};$.fn.kxbdMarquee.defaults={isEqual:true,loop:0,direction:"left",scrollAmount:1,scrollDelay:20};$.fn.kxbdMarquee.setDefaults=function(settings){$.extend($.fn.kxbdMarquee.defaults,settings);};})(Zepto);