上拉加载&&判断用户滑到底部

栏目: IOS · Android · 发布时间: 7年前

内容简介:上拉加载在h5移动开发经常需要用到,就类似于有兴趣的同学可以查看一般我们的做法是判断scrollTop和clientHeight对比scrollHeight,得出是否在底部。

上拉加载在h5移动开发经常需要用到,就类似于

上拉加载&&判断用户滑到底部

有兴趣的同学可以查看 react-loadmore ,使用起来非常简单!

一般我们的做法是判断scrollTop和clientHeight对比scrollHeight,得出是否在底部。

参考 detect-if-browser-window-is-scrolled-to-bottom

let scrollTop =
      (document.documentElement && document.documentElement.scrollTop) ||
      document.body.scrollTop;
    let scrollHeight =
      (document.documentElement && document.documentElement.scrollHeight) ||
      document.body.scrollHeight;
    let clientHeight =
      document.documentElement.clientHeight || window.innerHeight;
    let scrolledToBottom =
      Math.ceil(scrollTop + clientHeight) >= scrollHeight;
复制代码

但是这种做法在移动端会有各种各样的问题,包括浏览器版本,ios,Android。

最近发现一种比较简单的办法~

此方法非常简单,只需要为元素生成一个IntersectionObserver,并且监听该元素,然后在监听的回调判断元素的intersectionRatio比率即可达到所需。这是核心代码.

componentDidMount() {
    if (!this.props.Footer) this._svgaLoad();
    try {
      const node = document.getElementById('bottom')
      this.observer = new IntersectionObserver(this.insideViewportCb);
      this.observer.observe(node);
    } catch (err) {
      console.log("err in finding node", err);
    }
    window.addEventListener("scroll", this.handleOnScroll);
  }

  insideViewportCb(entries) {
    const { fetching, onBottom } = this.props;
    entries.forEach(element => {
      //在viewport里面
      if (element.intersectionRatio > 0&&!fetching) {
         onBottom();
      }
    });
  }
复制代码

给定一个底部的样式,然后用IntersectionObserver对它进行监听,只要判断它在viewportport就可以触发加载!

有兴趣的同学可以查看 react-loadmore ,使用起来非常简单!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

明解C语言(第3版)

明解C语言(第3版)

[日] 柴田望洋 / 管杰、罗勇、杜晓静 / 人民邮电出版社 / 2015-11-1 / 79.00元

本书是日本的C语言经典教材,自出版以来不断重印、修订,被誉为“C语言圣经”。 本书图文并茂,示例丰富,第3版从190段代码和164幅图表增加至205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。原著在日本广受欢迎,始终位于网上书店C语言著作排行榜首位。一起来看看 《明解C语言(第3版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换