php 滚动加载 js,使用jQuery或者原生js实现鼠标滚动加载页面新数据

本文介绍了如何使用JavaScript实现瀑布流布局中动态加载图片和内容的效果,当用户滚动到页面底部时自动加载更多数据。通过监听滚动事件,结合scrollTop、clientHeight和scrollHeight等属性判断是否到达底部,并触发加载函数。示例代码展示了如何在jQuery和纯JS环境下实现这一功能,适用于减轻服务器压力并提升用户体验。
摘要由CSDN通过智能技术生成

相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多,用鼠标操作的时候相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 ,今天我们就来看看他们的实现思路和js控制动态加载的代码。

下面的代码主要是控制滚动条下拉时的加载事件的,无论是加载图片还是加载记录数据  都可以。

加载jQuery库后我们可以这样使用:

$(window).scroll(function () {

var scrollTop = $(this).scrollTop();

var scrollHeight = $(document).height();

var windowHeight = $(this).height();

if (scrollTop + windowHeight == scrollHeight) {

//此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作

//var page = Number($("#redgiftNextPage").attr('currentpage')) + 1;

//redgiftList(page);

//$("#redgiftNextPage").attr('currentpage', page + 1);

}

});

解析:

判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

scrollTop为滚动条在Y轴上的滚动距离。

clientHeight为内容可视区域的高度。

scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为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);

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值