1/** 2 * @classDescription 模æMarqueeï¼æ é´ææ»å¨å 容 3 * @author Aken Li(www.kxbd.com) 4 * @DOM 5 * <div id="marquee"> 6 * <ul> 7 * <li></li> 8 * <li></li> 9 * </ul> 10 * </div> 11 * @CSS 12 * #marquee {overflow:hidden;width:200px;height:50px;} 13 * @Usage 14 * $("#marquee").kxbdMarquee(options); 15 * @options 16 * isEqual:true, //æææ»å¨çå ç´ é¿å®½æ¯å¦ç¸ç,true,false 17 * loop:0, //å¾ªç¯æ»å¨æ¬¡æ°ï¼0æ¶æ é 18 * direction:"left", //æ»å¨æ¹åï¼"left","right","up","down" 19 * scrollAmount:1, //æ¥é¿ 20 * scrollDelay:20 //æ¶é¿ 21 */ 22(function($){ 23 $.fn.kxbdMarquee=function(options){ 24 var opts=$.extend({},$.fn.kxbdMarquee.defaults, options); 25 26 return this.each(function(){ 27 var $marquee=$(this); //æ»å¨å ç´ å®¹å¨ 28 var _scrollObj=$marquee.get(0); //æ»å¨å ç´ å®¹å¨DOM 29 var scrollW=$marquee.width(); //æ»å¨å ç´ å®¹å¨ç宽度 30 var scrollH=$marquee.height(); //æ»å¨å ç´ å®¹å¨çé«åº¦ 31 var $element=$marquee.children(); //æ»å¨å ç´ 32 var $kids=$element.children(); //æ»å¨åå ç´ 33 var scrollSize=0; //æ»å¨å ç´ å°ºå¯¸ 34 35 //æ»å¨ç±»åï¼1å·¦å³ï¼0ä¸ä¸ 36 var _type=(opts.direction=="left"||opts.direction=="right") ? 1:0; 37 38 //鲿¢æ»å¨åå ç´ æ¯æ»å¨å ç´ å®½èåä¸å°å®é æ»å¨åå ç´ å®½åº¦ 39 $element.css(_type?"width":"height",10000); 40 41 //è·åæ»å¨å ç´ ç尺寸 42 if(opts.isEqual){ 43 scrollSize=$kids[_type?"outerWidth":"outerHeight"]()*$kids.length; 44 }else{ 45 $kids.each(function(){ 46 scrollSize+=$(this)[_type?"outerWidth":"outerHeight"](); 47 }); 48 }; 49 50 //æ»å¨å ç´ æ»å°ºå¯¸å°äºå®¹å¨å°ºå¯¸ï¼ä¸æ»å¨ 51 if(scrollSize<(_type?scrollW:scrollH)){return;}; 52 53 //å éæ»å¨åå ç´ å°å ¶æå ¥å°æ»å¨å ç´ åï¼å¹¶è®¾å®æ»å¨å ç´ å®½åº¦ 54 $element.append($kids.clone()).css(_type?"width":"height",scrollSize*2); 55 56 var numMoved=0; 57 function scrollFunc(){ 58 var _dir=(opts.direction=="left"||opts.direction=="right") ? "scrollLeft":"scrollTop"; 59 if (opts.loop>0) { 60 numMoved+=opts.scrollAmount; 61 if(numMoved>scrollSize*opts.loop){ 62 _scrollObj[_dir]=0; 63 return clearInterval(moveId); 64 }; 65 }; 66 67 if(opts.direction=="left"||opts.direction=="up"){ 68 var newPos=_scrollObj[_dir]+opts.scrollAmount; 69 if(newPos>=scrollSize){ 70 newPos-=scrollSize; 71 } 72 _scrollObj[_dir]=newPos; 73 }else{ 74 var newPos=_scrollObj[_dir]-opts.scrollAmount; 75 if(newPos<=0){ 76 newPos += scrollSize; 77 }; 78 _scrollObj[_dir]=newPos; 79 }; 80 }; 81 82 //æ»å¨å¼å§ 83 var moveId=setInterval(scrollFunc, opts.scrollDelay); 84 85 //é¼ æ åè¿åæ¢æ»å¨ 86 $marquee.hover(function(){ 87 clearInterval(moveId); 88 },function(){ 89 clearInterval(moveId); 90 moveId=setInterval(scrollFunc, opts.scrollDelay); 91 }); 92 }); 93 }; 94 95 $.fn.kxbdMarquee.defaults={ 96 isEqual: false, //æææ»å¨çå ç´ é¿å®½æ¯å¦ç¸ç,true,false 97 loop: 0, //å¾ªç¯æ»å¨æ¬¡æ°ï¼0æ¶æ é 98 direction: "up", //æ»å¨æ¹åï¼"left","right","up","down" 99 scrollAmount:1, //æ¥é¿ 100 scrollDelay:100 //æ¶é¿ 101 102 }; 103 104 $.fn.kxbdMarquee.setDefaults=function(settings) { 105 $.extend( $.fn.kxbdMarquee.defaults, settings ); 106 }; 107})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.