账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS监听scroll实现下拉加载的几个疑问
    55
    0
    通过监听scroll事件,判断容器的scrollTop、clientHeight和scrollHeight实现了下拉触底自动加载的效果,但是这种情况必须是子元素高度的总和大于父容器的高度时,也就是说父容器要有滚动条时才会生效。
    但是存在这么一种情况:页面初始时子元素高度的总和与父容器的高度相同或者子元素高度综合小于父容器高度时,不会出现滚动条,导致不会触发scroll事件。请问这种情况如何处理?
    以下是我的代码:
    <style>
      #container {
        height: 200px;
        overflow-x: hidden;
      }
      .ele {
        height: 50px;
        width: 100%;
      }
    </style>
    
    <script>
      let container = document.getElementById("container");
      container.onscroll = () => {
        if (container.scrollTop + container.clientHeight >= container.scrollHeight) {
                console.log('reached!');
            }
      }
    </script>
    
    <!-- 当子元素高度总和与父容器高度相同或者小于时,无法触发scroll -->
    <div id="container">
      <div class="ele">item1</div>
      <div class="ele">item2</div>
      <div class="ele">item3</div>
      <div class="ele">item4</div>
    </div>
    <!-- 当子元素高度总和大于父容器高度时,可以触发scroll -->
    <div id="container">
      <div class="ele">item1</div>
      <div class="ele">item2</div>
      <div class="ele">item3</div>
      <div class="ele">item4</div>
      <div class="ele">item5</div>
    </div>
    这种情况挺常见的,还请大佬不吝赐教!
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 朱颜未换 普通会员 1楼

      在JavaScript中,我们可以使用onscroll事件来监听浏览器滚动,从而实现下拉加载的功能。以下是一些关于如何监听scroll实现下拉加载的疑问:

      1. 什么是滚动? 滚动是指页面内容随浏览器窗口的滚动发生变化。滚动可能涉及到元素的滚动、区域的滚动,或者整个页面的滚动。当用户滚动页面时,onscroll事件会被触发。

      2. 怎么使用onscroll事件来监听滚动? 我们可以使用onscroll事件的参数scrollY来获取当前滚动的距离。当滚动距离大于某个值(比如50px)时,我们就可以认为用户已经滚动到了某个页面的底部,然后调用load方法加载对应的内容。

      3. 如何实现下拉加载? 在onscroll事件的回调函数中,我们可以检查当前滚动的距离是否大于某个值(比如50px),如果是,则调用load方法加载对应的内容。这可能涉及到请求服务器,或者在用户的浏览器上加载相应的HTML代码。

      4.onscroll事件的参数scrollY有什么作用? scrollY是onscroll事件的参数,它表示当前滚动的距离。这个值越大,表明用户滚动到了页面的底部。因此,我们可以通过检查scrollY来判断用户是否已经滚动到了页面的底部,从而实现下拉加载。

      5.onscroll事件的参数load方法有什么作用? load方法是一个函数,用于在用户滚动到页面底部时加载相应的HTML内容。这个方法的参数通常是HTML代码,我们可以根据需要在其中插入新的HTML内容,以实现下拉加载。

      6.onscroll事件如何防止页面滚动回顶部? onscroll事件会触发多次,导致页面滚动回顶部。为了防止这种情况,我们可以使用阻止默认行为(即不执行事件的默认行为)来阻止onscroll事件。例如,我们可以在onscroll事件的回调函数中添加一些代码,以防止页面滚动回顶部。

      以上就是使用onscroll事件实现下拉加载的一些基本思路和方法。在实际开发中,可能还需要考虑更多的因素,比如性能优化、数据同步等问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部