jQuery 滚动列表

网上拿来一段,改了一下,使用abosute提高浏览器渲染性能,增加设定可见行数。注意li之间不要上下margin,否则效果不好。

// 滚动插件 
// http://www.jb51.net/article/23526.htm
// usage: $("#scrollDiv").Scroll({line:4,speed:500,timer:1000, viewLine: 10}); 
// mod by Ethan Chen
(function($){ 
	$.fn.extend({ 
		Scroll:function(opt,callback){ 
			//参数初始化 
			if(!opt) var opt={}; 
			var $slc = $(this);
			var _this=this.eq(0).find("ul:first"); 
			var lineH=_this.find("li:first").innerHeight(), //获取行高 
			line=opt.line?parseInt(opt.line,10):parseInt(this.height()/lineH,10), //每次滚动的行数,默认为一屏,即父容器高度 
			speed=opt.speed?parseInt(opt.speed,10):500, //卷动速度,数值越大,速度越慢(毫秒) 
			timer=opt.timer?parseInt(opt.timer,10):3000; //滚动的时间间隔(毫秒) 
			if(line==0) line=1; 
			var upHeight=0-line*lineH; 
			var viewHeight = opt.viewLine? ( lineH * opt.viewLine ) : ( lineH * 5 );
			$slc.css({
				'position':'relative',
				'height':viewHeight,
				'overflow':'hidden'
			});
			_this.css({
				'position':'absolute',
				'top':0,
				'left':0
			});
			//滚动函数 
			scrollUp=function(){ 
				_this.animate(
					{ top:upHeight },
					speed,
					function(){ 
						for(i=1;i<=line;i++){ 
							_this.find("li:first").appendTo(_this); 
						} 
						_this.css({top:0}); 
					}
				); 
			} 
			//鼠标事件绑定 
			_this.hover(function(){ 
				clearInterval(timerID); 
			},function(){ 
				timerID=setInterval("scrollUp()",timer); 
			}).mouseout(); 
		} 
	}) 
})(jQuery); 


修改了一下,使用setTimeout 代替 setInterval 


// 滚动插件 
// http://www.jb51.net/article/23526.htm
// usage: $("#scrollDiv").Scroll({line:4,speed:500,timer:1000, viewLine: 10}); 
// mod by Ethan Chen
(function($){ 
	$.fn.extend({ 
		Scroll:function(opt,callback){ 
			//参数初始化 
			if(!opt) var opt={}; 
			var $slc = $(this);
			var _this=this.eq(0).find("ul:first"); 
			var lineH=_this.find("li:first").innerHeight(), //获取行高 
			line=opt.line?parseInt(opt.line,10):parseInt(this.height()/lineH,10), //每次滚动的行数,默认为一屏,即父容器高度 
			speed=opt.speed?parseInt(opt.speed,10):500, //卷动速度,数值越大,速度越慢(毫秒) 
			timer=opt.timer?parseInt(opt.timer,10):3000; //滚动的时间间隔(毫秒) 
			if(line==0) line=1; 
			var upHeight=0-line*lineH; 
			var viewHeight = opt.viewLine? ( lineH * opt.viewLine ) : ( lineH * 5 );
			$slc.css({
				'position':'relative',
				'height':viewHeight,
				'overflow':'hidden'
			});
			_this.css({
				'position':'absolute',
				'top':0,
				'left':0
			});
			//滚动函数 
			var t;
			var scrollUp=function(){ 
				_this.animate(
					{ top:upHeight },
					speed,
					function(){ 
						for(i=1;i<=line;i++){ 
							_this.find("li:first").appendTo(_this); 
						} 
						_this.css({top:0}); 
					}
				); 
				t = setTimeout(scrollUp, timer);
			} 
			//鼠标事件绑定 
			 _this.hover(function(){ 
				clearTimeout(t); 
			},function(){ 
				scrollUp();
			}).mouseout();  // mouseout to start the function 
			

		} 
	}) 
})(jQuery); 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值