懶加載 的應(yīng)用

1- 如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)坚俗。用函數(shù)isVisible實(shí)現(xiàn)

function isVisible($node){
 }

函數(shù):

function isVisible($node){
    var windowHeight = $(window).height(), //窗口的高度
        scrollTop = $(window).scrollTop(), //窗口的滾動(dòng)距離
        nodeHeight = $node.outerHeight(true), //元素的高度
        nodeOffset = $node.offset().top;  //元素到頁(yè)面頂部的距離
    if(scrollTop+windowHeight>nodeOffset && scrollTop<nodeOffset+nodeHeight){
             $node.addClass('ok'); //確定出現(xiàn)的元素添加class'ok'
             return true
    }else{return false}
}

2- 當(dāng)窗口滾動(dòng)時(shí)祸泪,判斷一個(gè)元素是不是出現(xiàn)在窗口可視范圍酗钞。每次出現(xiàn)都在控制臺(tái)打印 true 腹忽。代碼實(shí)現(xiàn):

function isVisible($node) {
            var winHe = $(window).height();
            var scrollTop = $(window).scrollTop();
            var offsetTop = $node.offset().top;
            var height = $node.innerHeight();
            if ( (winHe + scrollTop ) > offsetTop && (scrollTop < offsetTop + height) ) {
                return true;
            }else {
                return false;
            }
}
var p = $('p');
$(window).on('scroll',function(){
  if (isVisible(p)) {
  console.log('true');
}else {
 console.log('false'); 
}
})

3- 當(dāng)窗口滾動(dòng)時(shí),判斷一個(gè)元素是不是出現(xiàn)在窗口可視范圍算吩。在元素第一次出現(xiàn)時(shí)在控制臺(tái)打印 true留凭,以后再次出現(xiàn)不做任何處理。代碼實(shí)現(xiàn):

function isVisible($node) {
            var winHe = $(window).height();
            var scrollTop = $(window).scrollTop();
            var offsetTop = $node.offset().top;
            var height = $node.innerHeight();
            if ( (winHe + scrollTop ) > offsetTop && (scrollTop < offsetTop + height) ) {
                return true;
            }else {
                return false;
            }
}
var $name = $('p').eq(0);
$(window).on('scroll',function(){
  result($name);
})
function result($node) {
  if (isVisible($node) && !$node.hasClass('show')) {
  console.log('true');
    $node.addClass('show');
}
}

4- 圖片懶加載的原理

  • 懶加載(Load On Demand)是一種獨(dú)特而又強(qiáng)大的數(shù)據(jù)獲取方法,它能夠在用戶滾動(dòng)頁(yè)面的時(shí)候自動(dòng)獲取更多的數(shù)據(jù),而新得到的數(shù)據(jù)不會(huì)影響原有數(shù)據(jù)的顯示,同時(shí)最大程度上減少服務(wù)器端的資源耗用偎巢。
  • 如何加載圖片
    • 自定義屬性 data-src="圖片地址"
    • 需要加載的時(shí)候(待加載圖片位置在用戶視線范圍內(nèi))將圖片地址填入img標(biāo)簽的src
    • url = img.getAttribute('data-src')
    • img.setAttribute('src', url)
  • 如何判斷用戶看到圖片(待加載圖片位置在用戶視線范圍內(nèi))
    • 關(guān)鍵:
      • $node.offset().top 元素距離document頂端的距離
      • $(window).height() 瀏覽器窗口的高度
      • $(document).scrollTop() document滑動(dòng)的距離
    • 元素出現(xiàn)的條件: $(window).height() + $(document).scrollTop() >= $node.offset().top

5- 實(shí)現(xiàn)圖片懶加載效果

懶加載效果
代碼

6- 實(shí)現(xiàn) 新聞自動(dòng)懶加載效果 (這里是參考代碼, 其中html里的為前端代碼兼耀, js 里的內(nèi)容為 router.js里的后端代碼压昼, 也可參考其他視頻)

其他參考:
新聞懶加載1
懶加載 新聞2
新聞懶加載3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瘤运,隨后出現(xiàn)的幾起案子窍霞,更是在濱河造成了極大的恐慌,老刑警劉巖拯坟,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件但金,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡郁季,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踢匣,“玉大人溯警,你說(shuō)我怎么就攤上這事∧昴” “怎么了凿歼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)冗恨。 經(jīng)常有香客問(wèn)我答憔,道長(zhǎng),這世上最難降的妖魔是什么掀抹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任虐拓,我火速辦了婚禮,結(jié)果婚禮上渴丸,老公的妹妹穿的比我還像新娘侯嘀。我一直安慰自己另凌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布戒幔。 她就那樣靜靜地躺著吠谢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诗茎。 梳的紋絲不亂的頭發(fā)上工坊,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音敢订,去河邊找鬼王污。 笑死,一個(gè)胖子當(dāng)著我的面吹牛楚午,可吹牛的內(nèi)容都是我干的昭齐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矾柜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼阱驾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怪蔑,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤里覆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后缆瓣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喧枷,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年弓坞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隧甚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昼丑,死狀恐怖呻逆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菩帝,我是刑警寧澤咖城,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站呼奢,受9級(jí)特大地震影響宜雀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜握础,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一辐董、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禀综,春花似錦简烘、人聲如沸苔严。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)届氢。三九已至,卻和暖如春覆旭,著一層夾襖步出監(jiān)牢的瞬間退子,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工型将, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寂祥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓七兜,卻偏偏與公主長(zhǎng)得像丸凭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惊搏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 題目1:如何判斷一個(gè)元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間贮乳,肉眼可視)。寫一個(gè)函數(shù) isVisib...
    饑人谷_zhangfan閱讀 290評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評(píng)論 25 707
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案恬惯? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 這個(gè)世界上有許許多多“看似有道理”的道理酪耳! 竊以為所謂“窮人思維”,“富人思維”往往就是屬于看似有道理的道理刹缝,是一...
    淺然塢閱讀 229評(píng)論 0 0
  • 小概 synchronized 存在許多缺陷碗暗,使得使用非常困難,一旦開(kāi)始請(qǐng)求鎖便不能停止 無(wú)法中斷獲取過(guò)程中的線程...
    林柚柚_閱讀 398評(píng)論 0 0