/** * @classdescription ģ��marquee���޼�ϲ������� * @author aken li(www.kxbd.com) * @dom *
* *
* @css * #marquee {width:200px;height:50px;overflow:hidden;} * @usage * $('#marquee').kxbdmarquee(options); * @options * isequal:true,//���й�����Ԫ�س����ƿ����,true,false * loop: 0,//ѭ������������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;//�������ͣ�1���ң�0���� //��ֹ������Ԫ�رȹ���Ԫ�ؿ��ȡ����ʵ�ʹ�����Ԫ�ؿ�� $element.css(_type?'width':'height',10000); //��ȡ����Ԫ�صijߴ� 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,//ѭ������������0ʱ���� direction: 'left',//��������'left','right','up','down' scrollamount:1,//���� scrolldelay:40//ʱ�� }; $.fn.kxbdmarquee.setdefaults = function(settings) { $.extend( $.fn.kxbdmarquee.defaults, settings ); }; })(jquery);