使用jQuery或者原生js實(shí)現(xiàn)鼠標(biāo)滾動(dòng)加載頁(yè)面新數(shù)據(jù)
相信很多人都見(jiàn)過(guò)瀑布流圖片布局,那些圖片是動(dòng)態(tài)加載出來(lái)的,效果很好,對(duì)服務(wù)器的壓力相對(duì)來(lái)說(shuō)也小了很多,用鼠標(biāo)操作的時(shí)候相信都見(jiàn)過(guò)這樣的效果:進(jìn)入qq空間,向下拉動(dòng)空間,到底部時(shí),會(huì)動(dòng)態(tài)加載剩余的說(shuō)說(shuō)或者是日志 ,今天我們就來(lái)看看他們的實(shí)現(xiàn)思路和js控制動(dòng)態(tài)加載的代碼。
下面的代碼主要是控制滾動(dòng)條下拉時(shí)的加載事件的,無(wú)論是加載圖片還是加載記錄數(shù)據(jù) 都可以。
加載jQuery庫(kù)后我們可以這樣使用:
$(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(document).height(); var windowHeight = $(this).height(); if (scrollTop + windowHeight == scrollHeight) { //此處是滾動(dòng)條到底部時(shí)候觸發(fā)的事件,在這里寫要加載的數(shù)據(jù),或者是拉動(dòng)滾動(dòng)條的操作 //var page = Number($("#redgiftNextPage").attr('currentpage')) + 1; //redgiftList(page); //$("#redgiftNextPage").attr('currentpage', page + 1); } });
解析:
判斷滾動(dòng)條到底部,需要用到DOM的三個(gè)屬性值,即scrollTop、clientHeight、scrollHeight。
- scrollTop為滾動(dòng)條在Y軸上的滾動(dòng)距離。
- clientHeight為內(nèi)容可視區(qū)域的高度。
- scrollHeight為內(nèi)容可視區(qū)域的高度加上溢出(滾動(dòng))的距離。
從這個(gè)三個(gè)屬性的介紹就可以看出來(lái),滾動(dòng)條到底部的條件即為scrollTop + clientHeight == scrollHeight。
純js我們可以這樣做:
window.onscroll = function() { var scrollTop = document.body.scrollTop; var offsetHeight = document.body.offsetHeight; var scrollHeight = document.body.scrollHeight; if (scrollTop == scrollHeight - offsetHeight) { page++; loadList(page); } }; function loadList(page) { page = page || 1; if (isLoad) { getJSON('/forum.php?mod=hot&page=' + page).then(function(data) { if (data.code == 200) { data = data.data; if (data && Object.keys(data).length > 0) { for (var k in data) { var v = data[k]; detailTemplate = detailTemplate.cloneNode(true); var userInfoObj = detailTemplate.getElementsByClassName('user-info')[0]; userInfoObj.getElementsByClassName('name')[0].innerText = v.author; userInfoObj.getElementsByClassName('avatar')[0].src = v.avatar; userInfoObj.getElementsByClassName('post-time')[0].innerHTML = v.lastpost; detailTemplate.getElementsByClassName('title')[0].innerText = v.subject; detailTemplate.getElementsByClassName('desc')[0].innerText = v.subject; var extInfoObj = detailTemplate.getElementsByClassName('ext-info')[0]; extInfoObj.getElementsByClassName('from')[0].innerText = v.fname; extInfoObj.getElementsByClassName('view-time')[0].innerText = v.views; postListObj.appendChild(detailTemplate); } } else { isLoad = false; } } else { isLoad = false; } }, function(status) { console.log('Something went wrong, status is ' + status); }); } }
- jquery實(shí)現(xiàn)表格無(wú)縫滾動(dòng)
- Jquery原生態(tài)實(shí)現(xiàn)表格header頭隨滾動(dòng)條滾動(dòng)而滾動(dòng)
- asp.net+jquery滾動(dòng)滾動(dòng)條加載數(shù)據(jù)的下拉控件
- jquery滾動(dòng)組件(vticker.js)實(shí)現(xiàn)頁(yè)面動(dòng)態(tài)數(shù)據(jù)的滾動(dòng)效果
- 基于jquery實(shí)現(xiàn)頁(yè)面滾動(dòng)到底自動(dòng)加載數(shù)據(jù)的功能
- js/jquery控制頁(yè)面動(dòng)態(tài)加載數(shù)據(jù) 滑動(dòng)滾動(dòng)條自動(dòng)加載事件的方法
- jquery滾動(dòng)加載數(shù)據(jù)的方法
- Jquery公告滾動(dòng)+AJAX后臺(tái)得到數(shù)據(jù)
- 拉動(dòng)滾動(dòng)條加載數(shù)據(jù)的jquery代碼
- jQuery實(shí)現(xiàn)表格行數(shù)據(jù)滾動(dòng)效果
相關(guān)文章
jquery+json實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了如何利用jquery結(jié)合json實(shí)現(xiàn)分頁(yè)效果,感興趣的小伙伴們可以參考一下2016-03-03jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果,結(jié)合實(shí)例形式分析了jQuery使用HighCharts插件同時(shí)繪制柱狀圖、折線圖的組合雙軸圖實(shí)現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03基于jquery實(shí)現(xiàn)后臺(tái)左側(cè)菜單點(diǎn)擊上下滑動(dòng)顯示
一個(gè)左側(cè)菜單點(diǎn)擊是可以上下滑動(dòng),簡(jiǎn)潔時(shí)尚,復(fù)制即可使用,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-04-04jQuery使用ajax跨域獲取數(shù)據(jù)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇jQuery使用ajax跨域獲取數(shù)據(jù)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05PHP結(jié)合jQuery實(shí)現(xiàn)紅藍(lán)投票功能特效
本文給大家分享的是jQuery + PHP+mysql完成的投票程序,功能不是太復(fù)雜,主要是效果非常不錯(cuò),有需要的小伙伴可以參考下2015-07-07jQueryeasyui 中如何使用datetimebox 取兩個(gè)日期間相隔的天數(shù)
這篇文章主要介紹了jQueryeasyui 中使用datetimebox 取兩個(gè)日期間相隔的天數(shù),需要的朋友參考下吧2017-06-06jquery拖動(dòng)插件(jquery.drag)使用介紹
可以使用鼠標(biāo)任意拖動(dòng)列表項(xiàng)改變默認(rèn)的位置,具體的實(shí)現(xiàn)如下(附演示),感興趣的朋友可以學(xué)習(xí)下2013-06-06手機(jī)移動(dòng)端實(shí)現(xiàn) jquery和HTML5 Canvas的幸運(yùn)大獎(jiǎng)盤特效
這篇文章主要介紹了手機(jī)移動(dòng)端實(shí)現(xiàn) jquery和HTML5 Canvas的幸運(yùn)大獎(jiǎng)盤特效的相關(guān)資料,這里附有實(shí)現(xiàn)代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-12-12基于JQuery 滑動(dòng)與動(dòng)畫的說(shuō)明介紹
本篇文章小編為大家介紹,基于JQuery 滑動(dòng)與動(dòng)畫的說(shuō)明介紹。需要的朋友參考下2013-04-04解決Jquery下拉框數(shù)據(jù)動(dòng)態(tài)獲取的問(wèn)題
下面小編就為大家分享一篇解決Jquery下拉框數(shù)據(jù)動(dòng)態(tài)獲取的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01