看來 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/
淘寶
附件