Query判断滚动条滚到页面底部脚本

本文介绍如何使用JavaScript和jQuery检测滚动条是否滚动到底部的方法,包括不同条件下的判断逻辑及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实很简单我们只要使用到clientHeight、offsetHeight、scrollTop这三个参数就可以判断我们当前位置了,具体来给大家介绍一个例子。

例子,判断到底部

$(window).scroll(function () {
    if ($(document).scrollTop() + $(window).height() >= $(document).height()) {
        alert("哦哦,到底了.");
    }
});

如果要实现拉到底部自动加载内容。只要注册个滚动条事件:

首先,我们拉动滚动条,从最上面拉到最下面,变化的是scrollTop的值,而这个值是有一个区间的。
这个区间是: [0, (offsetHeight - clientHeight)]
即,滚动条拉动的整个过程的变化在 0 到 (offsetHeight – clientHeight) 范围之内。

1、判断滚动条滚动到最底端: scrollTop == (offsetHeight – clientHeight)
2、在滚动条距离底端50px以内: (offsetHeight – clientHeight) – scrollTop <= 50
3、在滚动条距离底端5%以内: scrollTop / (offsetHeight – clientHeight) >= 0.95

scrollBottomTest =function(){
     $("#contain").scroll(function(){
         var $this =$(this),
         viewH =$(this).height(),//可见高度
         contentH =$(this).get(0).scrollHeight,//内容高度
         scrollTop =$(this).scrollTop();//滚动高度
        //if(contentH - viewH - scrollTop <= 100) { //到达底部100px时,加载新内容
        if(scrollTop/(contentH -viewH)>=0.95){ //到达底部100px时,加载新内容
        // 这里加载数据..
        }
     });
}

js的判断

判断垂直滚动条是否到达底部
    廓清了以上的概念,编码其实就比较简单了, 以下是示例代码:

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="content-type" content="text/html;charset=utf-8">
      <title>下拉滚动条滚到底部了吗?</title>
      <script language="javascript" src="jquery-1.4.2.min.js"></script>
      <script language="javascript">
      $(document).ready(function (){
        var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)
        var nScrollTop = 0;   //滚动到的当前位置
        var nDivHight = $("#div1").height();
        $("#div1").scroll(function(){
          nScrollHight = $(this)[0].scrollHeight;
          nScrollTop = $(this)[0].scrollTop;
          if(nScrollTop + nDivHight >= nScrollHight)
            alert("滚动条到底部了");
          });
      });
      </script>
    <body>
    <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
      <div style="background-color:#ccc; height:750px;">IE 和 FF 下测试通过</div>
    </div>
    </body>
    </html>

    代码解说:
    内部div高度为750,外部div高度为500,所以垂直滚动条需要滚动750-500=250的距离,就会到达底部,参见语句nScrollTop + nDivHight >= nScrollHight。
    程序中,在外部div的scroll(滚动)事件中侦测和执行if判断语句,是非常消耗CPU资源的。用鼠标拖拉滚动条,只要有一个像素的变动就会触发该事件。但点击滚动条两头的箭头,事件触发的频率会低得多。所以滚动条的scroll事件要谨慎使用。
    本示例判断的是没有水平滚动条的情况,在有水平滚动条时,情况会有细小的变化,所以nScrollTop + nDivHight >= nScrollHight语句中,需要用“>=”比较运算符,而没有水平滚动条的时候,等号“=”就足够了。大家可以实际测试一下。还可以判断水平滚动条是否滚动到头了。


### 如何在 UniApp 中使页面自动滚动到底部 为了实现在 UniApp 页面加载完成后自动滚动至最底部的效果,可以采用 `scroll-view` 组件并配合 JavaScript 来完成这一功能[^1]。 #### 使用 Scroll-View 组件方法 通过设置 `scroll-view` 的属性来定义可滚动区域的高度以及启用垂直方向上的滚动能力。对于需要动态调整大小的内容区来说,设定一个固定的高值可能不是最佳方案;因此推荐计算实际所需的高度或利用视口单位(vh),这有助于适应不同设备屏幕尺寸的变化[^2]。 ```html <template> <view class="container"> <!-- 设置 scroll-y 属性允许纵向滚动 --> <scroll-view :style="{ height: scrollViewHeight }" scroll-y @scrolltolower="reachBottom"> <!-- 这里放置要展示的数据列表或其他内容 --> </scroll-view> </view> </template> <script> export default { data() { return { // 动态绑定 scroll-view 高度样式 scrollViewHeight: 'calc(100vh - 60px)', // 假设顶部有60px高的固定导航栏 }; }, methods: { reachBottom() { console.log('已到达底部'); // 当用户手动滚到低端触发此函数,在这里可以执行加载更多数据的操作 } }, mounted(){ this.scrollToBottom(); }, methods:{ scrollToBottom(){ setTimeout(() => { const query = uni.createSelectorQuery().in(this); query.select('.container').boundingClientRect(data => { if (data) { uni.pageScrollTo({ scrollTop: data.bottom, duration: 300 }); } }).exec(); }, 100); } } }; </script> ``` 上述代码片段展示了如何创建一个能够响应触摸事件并向下滚动的容器,并且包含了当组件挂载完毕后立即调用 `scrollToBottom()` 方法使得页面初次渲染即刻定位到最后一条记录处的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值