看来 lazyload.js 不能真正的实现数据动态加载了,只是一个样子,其实咱们实现动态加载不过是为了减轻服务器的压力而已,lazyload.js 显示是个花架子,如何实现真正的动态加载,须要对lazyload.js作改装。 javascript
我认为,动态加载本质上都是同样的,即: 图片或者数据一开始不会被加载,当你触发了滚动条(说明你想继续看这个网站)那么图片或者数据开始加载。 那么实现的方法其实有不少,可是基本上都是经过替换的方式来实现的。 php
1. 土豆: css
Html代码
- <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>
-
- 能看的见到图片:
- <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>100){
- // 滚动高度超过100时,加载图片
- hasShow = true;
- $("#lazyBox .lazyImg").each(function(){
- $(this).attr("src",$(this).attr("alt"));
- });
- }
- });
- </script>
2. 微博 ajax提取数据 html
img.php java
Php代码
- <?php
- if($_GET['p'] == 2)
- {
- echo '{"items":[{"name":"新加载 图片 1","pic":"images_test/5.jpg"},{"name":"新加载 图片 2","pic":"images_test/6.jpg"}, {"name":"新加载 图片 3","pic":"images_test/7.jpg"}, {"name":"新加载 图片 4","pic":"images_test/8.jpg"}]}';
- }
- elseif($_GET['p'] == 3)
- {
- echo '{"items":[{"name":"新加载 图片 5","pic":"images_test/9.jpg"},{"name":"新加载 图片 6","pic":"images_test/10.jpg"}, {"name":"新加载 图片 7","pic":"images_test/11.jpg"}, {"name":"新加载 图片 8","pic":"images_test/12.jpg"}]}';
- }
- ?>
3. 淘宝产品介绍 支持垂直、水平或同时两个方向的延迟。 jquery
兼容:ie6/7/8, firefox 3.5.5, opera 10.10, safari 4.0.4, chrome 3.0 ajax
演示:http://www.cnblogs.com/cloudgamer/archive/2010/03/03/ImagesLazyLoad.html chrome
下载:http://dl.iteye.com/topics/download/a9fe3611-6ce9-3013-a425-32c107d04451 json
4. 滚动显屏加载 api
demo 您能够狠狠地点击这里:jQuery滚动加载图片等demo
转:http://www.zhangxinxu.com/wordpress/?p=1259
Html代码
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
- <script type="text/javascript" src="http://www.zhangxinxu.com/study/js/mini/jquery.scrollLoading-min.js"></script>
- <script> $(function() { $(".scrollLoading").scrollLoading();}); </script>
表示全部class为scrollLoading的元素绑定了滚动加载的方法。
固然,不可能真的就如此简单,咱们还须要作点小动做的。元素默认是不加载的,那么真正的加载地址显然要预先在元素上放置的,例如新浪微博默认把头像地址绑在了一个自定义的”dynamic-src”属性上,见下图:
在HTML5中,以data-开头的自定义属性都是合法的,且地址能够是图片,页面等。因此,我设定了绑定地址的自定义属性为”data-url”,此属性值设为真实的图片(或页面)地址就能够了。例以下面:
<div class="scrollLoading" data-url="loaded.html">加载中...</div>
会在滚动时加载名为loaded.html的页面,并自动替换里面的内容。
对于经常使用的图片,还有一点小问题,就是其默认的src图片地址。其src地址不能是真实的图片地址(不然会直接一次性所有加载),也不能是空地址或是坏地址,不然IE浏览器下会出现很惊悚的红叉叉。
。个人作法是默认连接的是一个1px * 1px的gif透明图片(大小很小),同时能够透出后面加载中gif动画图片,当滚动加载的时候直接把此gif图片替换掉。因而,对于图片,可能就有相似下面的代码:
<img class="scrollLoading" data-url="http://image.zhangxinxu.com/image/study/head/s180/1.jpeg" src="http://www.zhangxinxu.com/study/image/pixel.gif" width="180" height="180" style="background:url(http://www.zhangxinxu.com/study/image/loading.gif) no-repeat center;" />
scrollLoading是个很简单很小的插件(无注释YUI compressor min版仅508B),因此参数也不多,就一个,见下表:
参数 默认 释义
attr |
data-url |
获取元素加载地址的属性名 |
就这些了。此插件只适用于页面默认滚动条的动态加载。对于内部div之类的滚动加载不支持。
5. KISSY 库
主页: http://docs.kissyui.com/
淘宝
附件