/**
* @classDescription 妯℃嫙Marquee锛屾棤闂存柇婊氬姩鍐呭
* @author Lyc 淇敼
* @DOM
*
* @CSS
* #marquee {overflow:hidden;width:200px;height:50px;}
* @Usage
* $("#marquee").kxbdMarquee(options);
* @options
* isEqual:true, //鎵€鏈夋粴鍔ㄧ殑鍏冪礌闀垮鏄惁鐩哥瓑,true,false
* loop:0, //寰幆婊氬姩娆℃暟锛?鏃舵棤闄
* 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); //婊氬姩鍏冪礌瀹瑰櫒
var _scrollObj=$marquee.get(0); //婊氬姩鍏冪礌瀹瑰櫒DOM
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){
scrollSize=$kids[_type?"outerWidth":"outerHeight"]()*$kids.length;
}else{
$kids.each(function(){
scrollSize+=$(this)[_type?"outerWidth":"outerHeight"]();
});
};
//婊氬姩鍏冪礌鎬诲昂瀵稿皬浜庡鍣ㄥ昂瀵革紝涓嶆粴鍔
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.hover(function(){
clearInterval(moveId);
},function(){
clearInterval(moveId);
moveId=setInterval(scrollFunc, opts.scrollDelay);
});
});
};
$.fn.kxbdMarquee.defaults={
isEqual:true, //鎵€鏈夋粴鍔ㄧ殑鍏冪礌闀垮鏄惁鐩哥瓑,true,false
loop: 0, //寰幆婊氬姩娆℃暟锛?鏃舵棤闄
direction: "left", //婊氬姩鏂瑰悜锛?left","right","up","down"
scrollAmount:1, //姝ラ暱
scrollDelay:20 //鏃堕暱
};
$.fn.kxbdMarquee.setDefaults=function(settings) {
$.extend( $.fn.kxbdMarquee.defaults, settings );
};
})(jQuery);