<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">"use strict";

/**
 * @classDescription æ¨¡æ‹ŸMarqueeï¼Œæ—&nbsp;é—´æ–­æ»šåŠ¨å†…å®¹
 * @author Lyc ä¿®æ”¹
 * @DOM
 *  	&lt;div id="marquee"&gt;
 *  		&lt;ul&gt;
 *   			&lt;li&gt;&lt;/li&gt;
 *   			&lt;li&gt;&lt;/li&gt;
 *  		&lt;/ul&gt;
 *  	&lt;/div&gt;
 * @CSS
 *  	#marquee {overflow:hidden;width:200px;height:50px;}
 * @Usage
 *  	$("#marquee").kxbdMarquee(options);
 * @options
 *		isEqual:true,		//æ‰€æœ‰æ»šåŠ¨çš„å…ƒç´&nbsp;é•¿å®½æ˜¯å¦ç›¸ç­‰,true,false
 *  	loop:0,				//å¾ªçŽ¯æ»šåŠ¨æ¬¡æ•°ï¼Œ0æ—¶æ—&nbsp;é™
 *		direction:"left",	//æ»šåŠ¨æ–¹å‘ï¼Œ"left","right","up","down"
 *		scrollAmount:1,		//æ­¥é•¿
 *		scrollDelay:20		//æ—¶é•¿
 */
(function ($) {
	$.fn.kxbdMarquee = function (options) {
		var opts = $.extend({}, $.fn.kxbdMarquee.defaults, options);

		return this.each(function () {
			var $marquee = $(this); //æ»šåŠ¨å…ƒç´&nbsp;å®¹å™¨
			var _scrollObj = $marquee.get(0); //æ»šåŠ¨å…ƒç´&nbsp;å®¹å™¨DOM
			var scrollW = $marquee.width(); //æ»šåŠ¨å…ƒç´&nbsp;å®¹å™¨çš„å®½åº¦
			var scrollH = $marquee.height(); //æ»šåŠ¨å…ƒç´&nbsp;å®¹å™¨çš„é«˜åº¦
			var $element = $marquee.children(); //æ»šåŠ¨å…ƒç´&nbsp;
			var $kids = $element.children(); //æ»šåŠ¨å­å…ƒç´&nbsp;
			var scrollSize = 0; //æ»šåŠ¨å…ƒç´&nbsp;å°ºå¯¸

			//æ»šåŠ¨ç±»åž‹ï¼Œ1å·¦å³ï¼Œ0ä¸Šä¸‹
			var _type = opts.direction == "left" || opts.direction == "right" ? 1 : 0;

			//é˜²æ­¢æ»šåŠ¨å­å…ƒç´&nbsp;æ¯”æ»šåŠ¨å…ƒç´&nbsp;å®½è€Œå–ä¸åˆ°å®žé™…æ»šåŠ¨å­å…ƒç´&nbsp;å®½åº¦
			$element.css(_type ? "width" : "height", 10000);

			//èŽ·å–æ»šåŠ¨å…ƒç´&nbsp;çš„å°ºå¯¸
			if (opts.isEqual) {
				scrollSize = $kids[_type ? "outerWidth" : "outerHeight"]() * $kids.length;
			} else {
				$kids.each(function () {
					scrollSize += $(this)[_type ? "outerWidth" : "outerHeight"]();
				});
			};

			//æ»šåŠ¨å…ƒç´&nbsp;æ€»å°ºå¯¸å°äºŽå®¹å™¨å°ºå¯¸ï¼Œä¸æ»šåŠ¨
			if (scrollSize &lt; (_type ? scrollW : scrollH)) {
				return;
			};

			//å…‹éš†æ»šåŠ¨å­å…ƒç´&nbsp;å°†å…¶æ’å…¥åˆ°æ»šåŠ¨å…ƒç´&nbsp;åŽï¼Œå¹¶è®¾å®šæ»šåŠ¨å…ƒç´&nbsp;å®½åº¦
			$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 &gt; 0) {
					numMoved += opts.scrollAmount;
					if (numMoved &gt; scrollSize * opts.loop) {
						_scrollObj[_dir] = 0;
						return clearInterval(moveId);
					};
				};

				if (opts.direction == "left" || opts.direction == "up") {
					var newPos = _scrollObj[_dir] + opts.scrollAmount;
					if (newPos &gt;= scrollSize) {
						newPos -= scrollSize;
					}
					_scrollObj[_dir] = newPos;
				} else {
					var newPos = _scrollObj[_dir] - opts.scrollAmount;
					if (newPos &lt;= 0) {
						newPos += scrollSize;
					};
					_scrollObj[_dir] = newPos;
				};
			};

			//æ»šåŠ¨å¼€å§‹
			var moveId = setInterval(scrollFunc, opts.scrollDelay);

			//é¼&nbsp;æ&nbsp;‡åˆ’è¿‡åœæ­¢æ»šåŠ¨
			$marquee.hover(function () {
				clearInterval(moveId);
			}, function () {
				clearInterval(moveId);
				moveId = setInterval(scrollFunc, opts.scrollDelay);
			});
		});
	};

	$.fn.kxbdMarquee.defaults = {
		isEqual: true, //æ‰€æœ‰æ»šåŠ¨çš„å…ƒç´&nbsp;é•¿å®½æ˜¯å¦ç›¸ç­‰,true,false
		loop: 0, //å¾ªçŽ¯æ»šåŠ¨æ¬¡æ•°ï¼Œ0æ—¶æ—&nbsp;é™
		direction: "left", //æ»šåŠ¨æ–¹å‘ï¼Œ"left","right","up","down"
		scrollAmount: 1, //æ­¥é•¿
		scrollDelay: 20 //æ—¶é•¿

	};

	$.fn.kxbdMarquee.setDefaults = function (settings) {
		$.extend($.fn.kxbdMarquee.defaults, settings);
	};
})(jQuery);
//# sourceMappingURL=jquery.kxbdMarquee.js.map
</pre></body></html>