使用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滾動(dòng)條美化插件nicescroll簡(jiǎn)單用法示例
這篇文章主要介紹了jQuery滾動(dòng)條美化插件nicescroll簡(jiǎn)單用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了jQuery滾動(dòng)條美化插件jquery.nicescroll.js的引入與使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2018-04-04
jQuery+CSS3折疊卡片式下拉列表框?qū)崿F(xiàn)效果
這是一款使用jQuery和CSS3制作的效果非常炫酷的折疊卡片式下拉列表框特效,感興趣的小伙伴們可以參考一下2015-11-11
基于jQuery實(shí)現(xiàn)收縮展開(kāi)功能
這篇文章主要介紹了基于jQuery實(shí)現(xiàn)收縮展開(kāi)功能的相關(guān)資料,需要的朋友可以參考下2016-03-03
一句jQuery代碼實(shí)現(xiàn)返回頂部效果(簡(jiǎn)單實(shí)用)
本文主要分享了利用一句jQuery代碼實(shí)現(xiàn)返回頂部效果的實(shí)例。代碼簡(jiǎn)單,保存到HTML文件就可以體驗(yàn)效果。下面跟著小編一起來(lái)看下吧2016-12-12
網(wǎng)頁(yè)下載文件期間如何防止用戶對(duì)網(wǎng)頁(yè)進(jìn)行其他操作
網(wǎng)頁(yè)下載文件時(shí)需要一段時(shí)間,在這期間如何防止用戶對(duì)網(wǎng)頁(yè)進(jìn)行其他操作,將div覆蓋在網(wǎng)頁(yè)上,將網(wǎng)頁(yè)鎖住,具體實(shí)現(xiàn)如下2014-06-06
jQuery實(shí)現(xiàn)用戶注冊(cè)的表單驗(yàn)證示例
用戶注冊(cè)的表單往往是需要進(jìn)行驗(yàn)證的,否則會(huì)有一些不否合規(guī)則的數(shù)據(jù)入庫(kù),后果會(huì)不堪設(shè)想,下面為大家詳細(xì)介紹下通過(guò)jquery是如何實(shí)現(xiàn)的,下面有個(gè)示例,感興趣的朋友可以參考下2013-08-08
淺談jquery回調(diào)函數(shù)callback的使用
這篇文章主要簡(jiǎn)單介紹了jquery回調(diào)函數(shù)callback的使用,需要的朋友可以參考下2015-01-01

