浅谈tudou土豆网首页图片延迟加载的效果


Posted in Javascript onJune 23, 2010

这样做的好处当然是如果有用户不需要查看下面的内容,则免去了下面所有图片的请求,这对减少服务器的压力还是很有帮助的。
实现:
其实tudou的实现原理很简单,
1.先把所有需要延迟加载的图片的src都设置成同1个小图片的连接(sprite.gif),把真真图片的连接放进图片的alt属性中,look下代码:

<a class="inner" target="new" title="史上最重街舞选手和最柔软街舞选手" href="http://www.tudou.com/programs/view/Utmt1_6Z-lU/"> 
<img width="120" height="90" class="pack_clipImg lazyImg" alt="http://i01.img.tudou.com/data/imgs/i/051/720/095/p.jpg" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DAA"/> 
</a>

2. 绑定window.scroll事件,在该事件里面的重设所有class为lazyImg的图片的src值,在土豆首页找到如下JS:
var o=function(){ 
var s=TUI.pos.scrollTop(),q=c; 
if(q.box[0]){ 
var r=q.box.offset().top; 
if(r-s>0&&r-TUI.pos.windowHeight()<s){ 
q.init() 
}else{ 
q.stop() 
} 
} 
if(!h||s<590){return true} 
TUI.widget.quickPlaylist.load(); 
h=false 
}; 
o(); 
$(window).bind("scroll",o);

我没有去跟入查看TUI.widget.quickPlaylist.load()方法的实现,tudou的JS都是压缩混淆的,看起来挺累,不过大家知道原理就可以了。
实例:
上面说了那么多,最后还是来个实例比较实际点,毕竟眼见为实嘛。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
</head> 
<body> 
能看的见到图片:<img src="http://at-img4.tdimg.com/board/2010/5/tylc-115X55.jpg"/> <div id="lazyBox" style="margin-top:100px;"> 
一开始看不到的图片: 
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="http://i01.img.tudou.com/data/imgs/i/051/720/095/p.jpg" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DAA"/> 
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="http://i01.img.tudou.com/data/imgs/i/051/871/396/m20.jpg" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DBA"/> 
</div> 
<div style="height:1000px;"> 
  
</div> 
<script type="text/javascript"> 
var hasShow = false; 
$(window).bind("scroll",function(){ 
if(hasShow==true){ 
$(window).unbind("scroll"); 
return; 
} 
var t = $(document).scrollTop(); 
if(t>50){ 
// 滚动高度超过50,加载图片 
hasShow = true; 
$("#lazyBox .lazyImg").each(function(){ 
$(this).attr("src",$(this).attr("alt")); 
}); 
} 
}); 
</script> 
</body> 
</html>

把上面代码copy到本地运行下就可以看到效果了。
Javascript 相关文章推荐
js保留小数点后几位的写法
Jan 03 Javascript
JQuery处理json与ajax返回JSON实例代码
Jan 03 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
Jan 05 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
vue项目实现图片上传功能
Dec 23 Javascript
有道JavaScript监听浏览器的问题
Jun 23 #Javascript
utf-8编码引起js输出中文乱码的解决办法
Jun 23 #Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 #Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 #Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 #Javascript
jquery tab插件制作实现代码
Jun 22 #Javascript
jquery多浏览器捕捉回车事件代码
Jun 22 #Javascript
You might like
php读取mysql的简单实例
2014/01/15 PHP
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
Element Input组件分析小结
2018/10/11 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
Django与JS交互的示例代码
2017/08/23 Python
用python实现对比两张图片的不同
2018/02/05 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
自行车广告词大全
2014/03/21 职场文书
青年文明号创建承诺
2014/03/31 职场文书
班级学习计划书
2014/04/27 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
学校联谊协议书
2014/09/16 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
电影开国大典观后感
2015/06/04 职场文书
《花钟》教学反思
2016/02/17 职场文书