繁体   English   中英

如何检测用户何时滚动到 div 的底部 - Vue

[英]How to detect when a user scrolls to the bottom of a div - Vue

我目前正在尝试在我的网站上实现无限滚动,我正在使用 Vue 框架。 Vue 有一些无限加载库,但是在集成它们之后,它们有一些对我来说太严重的问题。

我已经有了它,所以一旦满足某个条件,我就可以将更多数据添加到数组中,我只需要能够检测何时到达/向下滚动到 div 的底部。

我确实需要将它与 Vue 中的 for 循环集成,尽管这似乎不适用于一些常见的解决方案。 这基本上就是我的代码的样子。

<div id="container">
    <div v-for="object in objects">
        <div class="class123">
            <p>Display Stuff</p>
        </div>
    </div>
</div>

我将如何检测用户何时向下滚动到容器底部? 我试过,它在没有 Vue 的情况下工作,但是一旦我添加了 Vue,它似乎不起作用:

jQuery(function($) {
    $('#container').on('scroll', function() {
        if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
            alert('end reached');
        }
    })
});

我很感激一些帮助,谢谢。

归功于潘安

您必须捕获 div 本身的滚动事件并将其绑定到计算滚动位置并确定是否在底部滚动的方法。 使用普通的 Vue:

<template>
  <div @scroll="onScroll"></div>
</template>

<script>
export default function () {
  methods: {
    onScroll ({ target: { scrollTop, clientHeight, scrollHeight }}) {
      if (scrollTop + clientHeight >= scrollHeight) {
        this.loadMorePosts()
      }
    }
  }
}
</script>

截至发布日期,正在使用最新版本的 Chrome、Chromium Edge 和 Firefox。

如果你不介意添加新的依赖,你可以使用这个 NPM 包[Vue Infinite Scroll][1]完成。

您还可以在此 CodePen 中查看工作示例: https ://codepen.io/fayazara/pen/PLmRLz

查看这篇Medium 文章以获取更多解释

如何知道用户何时滚动过去<div> ?</div><div id="text_translate"><p> 我正在构建一些东西,向用户展示他们没有看到的项目。</p><p> 每个项目都在一个&lt;div&gt;中,因此当用户滚动过去一个 div 或查看该 div 时,我希望将该项目标记为已被看到。</p><p> 谷歌阅读器会这样做,如果您滚动浏览提要中的某个项目,它会自动将其标记为已读。</p><p> 如何跟踪? 请指教。</p><p> 注意:不应仅限于使用鼠标滚动、向下/向上翻页、使用箭头键等也应计算在内。 主要标准是用户已经看到了一个 div。</p></div>

[英]How to know when a user scrolls past a <div>?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM