`
十三‘’
  • 浏览: 2043 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jquery图片延时加载

阅读更多
有几处小问题,改动下,顺便绑定两个自定义事件

项目需求,需要仿微博即时信息滚动那个效果,两点:
1、图片延时加载
2、无限循环滚动

想找个jquery插件,没发现太靠谱的,那个老早出来的jquery.lazyload.js怎么不能用了呢,自己写个吧。

原理很简单,三步:
1、把要延时的html片段放到textarea标签下;
2、获得textarea的value值,用正则表达式替换图片地址,并把实际地址设置成img自定义属性realsrc;
3、动态append预加载的dom。

具体实现如下:
(function($){
	$.fn.dScroll=function(opts){
		opts=$.extend({
			itemSelector:'.item'	//列表
			,acSelector:'.append-content'	//追加textarea容器
			,blankImgSrc:'images/s.gif'	//占位符
			,scrollTime:1000
			,delayTime:3000
		},opts);
		return this.each(function(){
			//初始化
			var $inner	//里面包一层
				,$me=$(this)
				,$initShowItems=$me.find(opts.itemSelector)	//初始化可见的列表项
				,$acWrapper=$(opts.acSelector,$me)	//追加textarea容器
				,acValue=$acWrapper.val()	//要追加的内容
				,$ac	//追加内容的jquery对象
				,appendMark=false	//追加结束标记
				,blankImgSrc=opts.blankImgSrc	
				,cur=0	//最顶端的列表项index
				,initShowItemsNum=$initShowItems.length	//初始化可见的列表项数目
				,realItemsNum //实际列表项数目
				,tid	//setInterval句柄
				,events;
			//清除append容器
			$acWrapper.remove();
			//init wrapper
			$me.height($me.height()).css({
				'overflow':'hidden'
			});
			//将图片实际地址变成img的特殊属性,留待以后替换
			acValue=acValue.replace(/<(img[^>]*) src="([^"]*)"([^>]*)/gi,function(p0,p1,p2,p3){
				return "<"+p1+' src="'+blankImgSrc+'" realsrc="'+p2+'"'+p3;
			});
			//生成dom
			$ac=$(acValue).filter(opts.itemSelector);
			//用相对定位控制滚动
			$initShowItems.wrapAll('<div class="inner" />');
			$inner=$me.children('.inner').css({
				'position':'relative'
				,'top':'0px'
				,'left':'0px'
			});
			var scrollFn=function(){
				var $newItem
					//,curScrollTop=$me.scrollTop()
					,moveDis=0;
				if(!appendMark){	//如果追加没结束
					$newItem=$ac.eq(cur);
					if($newItem.length>0){
						//替换为真实图片地址
						$newItem.find('img').each(function(){
							$(this).attr('src',$(this).attr('realsrc'));
						});
						$newItem.appendTo($inner);
						
					}else{	//追加结束
						//获得实际item数目
						realItemsNum=initShowItemsNum+cur+1;
						$inner.find(opts.itemSelector).clone().appendTo($inner);
						appendMark=true;
					}
				}
				if(appendMark&&cur===(realItemsNum-1)){
					cur=0;
					$inner.css({
						top:0
					});
				}
				//移动距离
				moveDis=$inner.stop(true,true).position().top-$me.find(opts.itemSelector).eq(cur).outerHeight(true);
				$inner.animate({
					top:moveDis
				},opts.scrollTime,function(){
					cur++;
				});
			}		
			tid=setInterval(scrollFn,opts.delayTime);
			//鼠标悬浮就不要滚了
			$me.hover(function(){
				clearInterval(tid);
			},function(){
				tid=setInterval(scrollFn,opts.delayTime);
			});
			//监听外部事件变化
			$me.bind('stopdscroll',function(e){
				clearInterval(tid);
			});
			$me.bind('restartdscroll',function(e){
				clearInterval(tid);
				tid=setInterval(scrollFn,opts.delayTime);
			});
		});
	}
})(jQuery);
分享到:
评论
4 楼 yuvista 2011-06-02  
感觉这方法 ,比较非主流
3 楼 wangyj0898 2011-05-31  
哎,自己功力尚浅,看的还有点困难,不过感觉真的是很不错·!
2 楼 十三‘’ 2011-05-30  
BoneWG 写道
引用:
  把要延时的html片段放到textarea标签下

构建json数据,然后js拼字符串不更省流量吗,也省的写正则,而且你这样写的话只是一些条目不停循环,并不是实时更新数据替换,怎么不考虑ajax获取json然后拼字符串,然后实时添加并remove旧条目,这样更好啊


呵呵,适用不同的需求,ajax请求数据追加是另一种大规模数据的呈现方式了,像“无极分页”是吧
1 楼 BoneWG 2011-05-27  
引用:
  把要延时的html片段放到textarea标签下

构建json数据,然后js拼字符串不更省流量吗,也省的写正则,而且你这样写的话只是一些条目不停循环,并不是实时更新数据替换,怎么不考虑ajax获取json然后拼字符串,然后实时添加并remove旧条目,这样更好啊

相关推荐

    jquery图片延迟加载

    **jQuery图片延迟加载技术详解** 在网页设计中,图片加载是一项关键任务,尤其对于内容丰富的网站,如果所有图片一次性加载,可能会导致页面加载速度变慢,用户体验下降。为了解决这个问题,开发人员引入了“图片...

    jquery 图片延迟加载

    2. **初始化插件**:使用jQuery选择器找到所有的延迟加载图片,并绑定滚动事件。 3. **滚动检测**:当用户滚动页面时,检查图片是否已进入可视区域。 4. **加载图片**:如果图片在可视区域内,将`data-src`属性的值...

    jquery 图片延迟加载插件制作tab选项卡图片异步加载

    本文将详细介绍如何使用jQuery制作一个图片延迟加载插件,以及如何将其应用于tab选项卡中的图片异步加载。 首先,我们需要理解jQuery的基本用法。jQuery是一个强大的JavaScript库,提供了简洁的API来处理DOM操作、...

    jquery图片延迟加载花瓣网首页图片波浪条纹排列加载

    标题中的“jquery图片延迟加载”是指一种网页优化技术,它允许网页在用户滚动到图片所在位置时才开始加载图片,而不是在页面初次加载时一次性加载所有图片。这种技术可以显著提高网页的加载速度,减少用户的等待时间...

    JQUERY图片延迟加载,可以让你的首页一些不重要的图片延迟加载。

    "JQUERY图片延迟加载"是一种优化技术,它允许非首屏的或者不立即需要显示的图片在用户滚动到可视区域时才开始加载,以此来提升网页加载效率,降低用户等待时间。这种技术尤其适用于首页内容丰富的网站,如新闻门户、...

    jquery图片延迟加载效果

    以下是一个简单的jQuery延迟加载图片的实现步骤: 1. **HTML结构**:图片元素通常会有一个占位符,src属性设置为一个较小的透明GIF或默认图片,真正的图片源存储在data-src属性中。 ```html 延迟加载图片"&gt; ``` 2. ...

    JQuery 图片延迟加载 lazyload

    JQuery 图片延迟加载 lazyload

    JQuery图片延迟加载效果

    **jQuery图片延迟加载效果** 在网页设计中,图片是最消耗页面加载时间的元素之一。为了提升用户体验,一种常见的优化策略是使用jQuery实现图片延迟加载(Lazy Load)效果。这种技术只在图片进入浏览器的可视区域时...

    jQuery图片延时加载插件imgLazyLoad

    为了优化网页性能,开发者常常使用延时加载(懒加载)技术,只在用户滚动到可视区域时才加载图片。jQuery中的imgLazyLoad插件就是一个实现这一功能的优秀工具。 ### imgLazyLoad插件介绍 imgLazyLoad是一款轻量级...

    jQuery图片延迟加载插件Lazy Load.zip

    jQuery图片延迟加载插件Lazy Load是一种高效的前端技术,旨在优化网页性能,特别是在包含大量图片的网页上。在当今互联网环境中,用户体验是至关重要的,而快速的页面加载速度是提升用户体验的关键因素之一。Lazy ...

    jquery图片预加载

    总的来说,jQuery图片预加载技术通过提前加载图片资源,提高了网页的响应速度和用户体验。正确理解和应用预加载策略,是现代网页开发中的重要技能。在实际项目中,还需要根据具体需求和性能考虑,灵活选择和优化预...

    jQuery图片延迟加载插件

    jQuery图片延迟加载插件是一款基于jquery实现的轻量级图片延迟加载插件。由于图片太大,加载缓慢,本插件可以完美解决该问题,加载图片之前先显示loading图片,用户体验更好。本文档有实例,可以直接使用。

    jQuery图片延迟加载插件jQuery.lazyload

    jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度。在某些情况下,它也能帮助减轻服务器负载。演示地址http://www.jq22.com/jquery-info390

Global site tag (gtag.js) - Google Analytics