浅谈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 相关文章推荐
javascript最常用与实用的创建类的代码
Aug 12 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
一个JQuery操作Table的代码分享
Mar 30 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
有道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高级OOP技术演示
2009/08/27 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
js 目录列举函数
2008/11/06 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
python django集成cas验证系统
2014/07/14 Python
用Python编写简单的定时器的方法
2015/05/02 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
Python单链表简单实现代码
2016/04/27 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python做反被爬保护的方法
2019/07/01 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
2016新年感言
2015/08/03 职场文书