淺談tudou馬鈴薯網首頁圖片消極式載入的效果_javascript技巧

來源:互聯網
上載者:User
這樣做的好處當然是如果有使用者不需要查看下面的內容,則免去了下面所有圖片的請求,這對減少伺服器的壓力還是很有協助的。
實現:
其實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="yun_qi_img/p.jpg" src="yun_qi_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="yun_qi_img/tylc-115X55.jpg"/>

<div id="lazyBox" style="margin-top:100px;">
一開始看不到的圖片:
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="yun_qi_img/p.jpg" src="yun_qi_img/sprite.gif" coords="_DAA"/>
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="yun_qi_img/m20.jpg" src="yun_qi_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到本地運行下就可以看到效果了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.