H5下拉刷新分页

本文介绍了如何使用IntersectionObserverAPI来监听分页列表底部元素与视口的交叉状态,当用户滚动到底部时,动态加载更多数据,提供流畅的用户体验。

对于分页需求,分页数据的请求触发十分重要,监听滑动到底的触发也有很多种。

1.IntersectionObserver监听

IntersectionObserver 接口(从属于 Intersection Observer API)提供了一种异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的方法。其祖先元素或视口被称为根(root)。

由MDN文档可知,IntersectionObserver可以观察目标元素和父元素可视区域的重叠部分,即可以判断一个元素是否进入可视区域中。
所以可以在分页列表尾部,增加一个占位的被观察元素,当被观察的元素进入父元素可视区域,就是已经滚动到列表容器底部了。同时IntersectionObserver的异步观察可以在需要的时候触发回调执行。
例子:

  <ul class="dataList">
    <button class="bottomnBtn">到底的介绍</button>
  </ul>
    <script>
    //pageSize可以大一点,若初始化第一页没铺满一屏,则不会触发分页
    var page = 1, pageSie = 20;
    const obverseBottn = new IntersectionObserver((entries) => {
      //  intersectionRatio 为 0,则目标在视野外,
      if (entries[0].intersectionRatio <= 0) return;
      getPaginationData()
      page += 1;
    }
    )
    obverseBottn.observe(document.querySelector(".bottomnBtn"));
    function getPaginationData(){
      let fragme = new DocumentFragment();
      let bottomnBtn = document.querySelector(".bottomnBtn")
      for (let i = (page - 1) * pageSie; i < page * pageSie; i++) {
        let li = document.createElement('li');
        li.innerHTML = i;
        fragme.append(li);
      }
      bottomnBtn.parentNode.insertBefore(fragme, bottomnBtn)
    }

  </script>
    .dataList {
      width: 300px;
      height: 800px;
      border: 5px solid black;
      margin: 0 auto;
      overflow-y: scroll;
      list-style: none;
    }

    .dataList li {
      height: 50px;
      background-color: aquamarine;
      margin: 10px 0;
    }

    .bottomnBtn {
      width: 100%;
      height: 50px;
      background-color: transparent;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晨灰ash2

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

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

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

打赏作者

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

抵扣说明:

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

余额充值