如何自动计算屏幕滚动时加载事件?

本文介绍了一种实现滚动加载的方法,通过监测滚动位置判断是否加载更多数据。文章详细解释了相关DOM属性及其用法,并提供了具体实例。

经常我们在开发工作中面临这种问题,特别是拖动滚动条到一定距离时需要加载事件,一般用于分页加载数据。

因此今天总结了一种方法:

首先必须明白几个元素属性的意思:

(1)获取浏览器显示区域(可视区域)的高度 :$(window).height(); 

(2)获取浏览器显示区域(可视区域)的宽度 :$(window).width();   

(3)获取页面的文档高度:$(document).height(); 

(4)获取页面的文档宽度 :$(document).width(); 

(5)浏览器当前窗口文档body的高度:$(document.body).height();

(6)浏览器当前窗口文档body的宽度:$(document.body).width();

(7)获取滚动条到顶部的垂直高度 (即网页被卷上去的高度):$(document).scrollTop(); 

(8)获取滚动条到左边的垂直宽度 :$(document).scrollLeft(); 

(9)获取或设置元素的宽度:$(obj).width();

(10)获取或设置元素的高度:$(obj).height();

(11)某个元素的上边界到body最顶部的距离:obj.offset().top;//(在元素的包含元素不含滚动条的情况下)

(12)某个元素的左边界到body最左边的距离:obj.offset().left;//(在元素的包含元素不含滚动条的情况下)

(13)返回当前元素的上边界到它的包含元素的上边界的偏移量:obj.offset().top//(在元素的包含元素含滚动条的情况下)

(14)返回当前元素的左边界到它的包含元素的左边界的偏移量:obj.offset().left//(在元素的包含元素含滚动条的情况下)

示例:假如有一个div里面有两个小div,一上一下的。

现在情况我需要使div中id=“div2”区域滚动,div中id=“div1”固定不动,然后id="div2"的右边带上滚动条,一旦滚动条拉到底部就自动加载数据。

代码如下:

<div class="container">

<div id="div1">

巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉罢了罢了罢了吧

巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉罢了罢了罢了吧

巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉罢了罢了罢了吧

</div>

<div id="div2" style=" overflow:auto;-webkit-overflow-scrolling:touch">

滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域

滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域

滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域

滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域滚动区域

</div>

</div>

js代码:

self.minotor = function(){

//先自动动态计算div中的id=“div2”的高度(也就是滚动的区域距离)

var scrollheight = parseInt($(document).height())-parseInt($("#div1").css("height"))

console.log("滚动区域高度大小"+scrollheight);

//动态设置成滚动区域的高度大小,这样的话右边的侧边栏就会出现滚动条。

$("#div2").css("height",scrollheight+"px");

//滚动区域滚动加载数据

$("#div2").scroll(function(){

var $this = $(this),

viewH = $(this).height(),//可见高度

contentH = $(this).get(0).scrollHeight,//内容高度

scrollTop = $(this).scrollTop(),//滚动高度

if(contentH-viewH-scrollTop<=10){//内容高度减去可见高度-滚动高度小于等于10的时候加载数据

//加载数据

loadData();

}

})

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门吹雪吹吹风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值