淺談tudou土豆網(wǎng)首頁(yè)圖片延遲加載的效果
實(shí)現(xiàn):
其實(shí)tudou的實(shí)現(xiàn)原理很簡(jiǎn)單,
1.先把所有需要延遲加載的圖片的src都設(shè)置成同1個(gè)小圖片的連接(sprite.gif),把真真圖片的連接放進(jìn)圖片的alt屬性中,look下代碼:
<a class="inner" target="new" title="史上最重街舞選手和最柔軟街舞選手" >
<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事件,在該事件里面的重設(shè)所有class為lazyImg的圖片的src值,在土豆首頁(yè)找到如下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);
我沒(méi)有去跟入查看TUI.widget.quickPlaylist.load()方法的實(shí)現(xiàn),tudou的JS都是壓縮混淆的,看起來(lái)挺累,不過(guò)大家知道原理就可以了。
實(shí)例:
上面說(shuō)了那么多,最后還是來(lái)個(gè)實(shí)例比較實(shí)際點(diǎn),畢竟眼見(jiàn)為實(shí)嘛。
<!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>
能看的見(jiàn)到圖片:<img src="http://at-img4.tdimg.com/board/2010/5/tylc-115X55.jpg"/>
<div id="lazyBox" style="margin-top:100px;">
一開(kāi)始看不到的圖片:
<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){
// 滾動(dòng)高度超過(guò)50,加載圖片
hasShow = true;
$("#lazyBox .lazyImg").each(function(){
$(this).attr("src",$(this).attr("alt"));
});
}
});
</script>
</body>
</html>
把上面代碼copy到本地運(yùn)行下就可以看到效果了。
相關(guān)文章
基于JS實(shí)現(xiàn)數(shù)字+字母+中文的混合排序方法
這篇文章主要介紹了基于JS實(shí)現(xiàn)數(shù)字+字母+中文的混合排序方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06noscript 標(biāo)簽 一個(gè)被忽視的重要標(biāo)簽
這篇文章主要介紹了noscript 標(biāo)簽 一個(gè)被忽視的重要標(biāo)簽,需要的朋友可以參考下2023-03-03學(xué)習(xí)JavaScript一定要知道的3個(gè)小技巧
這篇文章主要給大家分享的是學(xué)習(xí)JavaScript一定要知道的3個(gè)小技巧,通常在 Angular 或 React 項(xiàng)目中,code review 時(shí)看到一些老式的 JavaScript 代碼,就會(huì)將開(kāi)發(fā)人員歸類(lèi)為初學(xué)者,下面我們就來(lái)一起看看初學(xué)者需要知道的三個(gè)小技巧,需要的朋友可以參考一下2021-12-12實(shí)時(shí)編輯網(wǎng)頁(yè)網(wǎng)頁(yè)文字實(shí)時(shí)編輯,如同TEXTBOX一般
實(shí)時(shí)編輯網(wǎng)頁(yè)網(wǎng)頁(yè)文字實(shí)時(shí)編輯,如同TEXTBOX一般...2007-03-03JavaScript高仿支付寶倒計(jì)時(shí)頁(yè)面及代碼實(shí)現(xiàn)
在支付寶上我們經(jīng)常會(huì)見(jiàn)到支付寶倒計(jì)時(shí)功能,倒計(jì)時(shí)應(yīng)用非常廣泛,下文給大家介紹js制作支付寶倒計(jì)時(shí)功能,但是里面涉及到,倒計(jì)時(shí),彈框,以及字體圖的相關(guān)知識(shí),感興趣的朋友一起看看吧2016-10-10用Js實(shí)現(xiàn)的動(dòng)態(tài)增加表格示例自己寫(xiě)的
動(dòng)態(tài)增加表格的方法有很多,但大多說(shuō)實(shí)現(xiàn)起來(lái)比較繁瑣,本文的這個(gè)示例是作者自己手寫(xiě)的,經(jīng)測(cè)試效果還不錯(cuò),但唯獨(dú)不兼容FF,感興趣的朋友可以參考下2013-10-10使用JS模擬錨點(diǎn)跳轉(zhuǎn)的實(shí)例
下面小編就為大家分享一篇使用JS模擬錨點(diǎn)跳轉(zhuǎn)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02CocosCreator實(shí)現(xiàn)技能冷卻效果
這篇文章主要介紹了CocosCreator實(shí)現(xiàn)技能冷卻效果,同學(xué)們可以跟著教程,親手試一下,代碼都是可以復(fù)用的2021-04-04