原生js实现下拉刷新和上拉加载更多

标题:原生 JavaScript 实现下拉刷新和上拉加载更多

要实现下拉刷新和上拉加载更多功能,遵循以下步骤:

  1. 监听 touchstarttouchmovetouchend 事件,记录下起始位置和滑动距离
  2. touchend 事件中,当滑动距离超过一定距离时,在页面顶部或底部添加加载中的提示条,并触发请求加载数据的函数
  3. 在数据加载完成后,调用相应的函数更新列表
  4. 当用户手指在下拉或上拉时,显示提示文本,当拖动距离不足时隐藏提示文本

下面是具体实现

实现下拉刷新

let startY, moveY, diffY // 记录滑动距离
let pullRefresh = document.querySelector('.pull-refresh') // 下拉刷新提示
let pullRefreshText = pullRefresh.querySelector('.pull-refresh-text') // 下拉刷新提示文本
let pullRefreshIcon = pullRefresh.querySelector('.pull-refresh-icon') // 下拉刷新图标

document.addEventListener('touchstart', function (e) {
  startY = e.touches[0].pageY
})

document.addEventListener('touchmove', function (e) {
  moveY = e.touches[0].pageY
  diffY = moveY - startY

  // 当用户下拉时,显示提示文本
  if (diffY > 0) {
    pullRefreshText.style.display = 'block'
    pullRefreshIcon.style.display = 'none'
    pullRefresh.style.height = diffY / 2 + 'px'
  } else {
    pullRefreshText.style.display = 'none'
  }
})

document.addEventListener('touchend', function (e) {
  // 当用户下拉并松手时,触发下拉刷新
  if (diffY > 80) {
    pullRefreshText.innerText = '正在刷新...'
    pullRefreshIcon.style.display = 'inline-block'
    pullRefresh.style.height = '50px'

    setTimeout(function () {
      // 模拟数据加载
      let data = ['新数据1', '新数据2', '新数据3']
      updateList(data)
      resetPullRefresh()
    }, 1500)
  } else {
    resetPullRefresh()
  }
})

// 重置下拉刷新提示
function resetPullRefresh () {
  pullRefreshText.innerText = '下拉可以刷新'
  pullRefreshIcon.style.display = 'inline-block'
  pullRefresh.style.height = '0px'
}

在该示例中,pull-refresh-textpull-refresh-iconpull-refresh 分别是提示文本、刷新图标和提示条的 DOM 元素, updateList 函数用来更新列表,resetPullRefresh 函数用于重置提示条的样式。

实现上拉加载更多

let loadingMore = false // 记录是否正在加载更多
let loadMore = document.querySelector('.load-more') // 上拉加载提示

window.addEventListener('scroll', function () {
  let scrollHeight = document.documentElement.scrollHeight // 获取页面总高度
  let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop // 获取滚动条滚动的距离
  let clientHeight = document.documentElement.clientHeight // 获取当前可视区域高度

  // 当用户滚动到页面底部时,显示提示文本并触发加载更多数据
  if (scrollTop + clientHeight >= scrollHeight && !loadingMore) {
    loadingMore = true
    loadMore.innerText = '加载中...'

    setTimeout(function () {
      // 模拟数据加载
      let data = ['更多数据1', '更多数据2', '更多数据3']
      updateList(data)
      loadingMore = false
      loadMore.innerText = '上拉加载更多'
    }, 1500)
  }
})

在该示例中, loadingMore 记录当前是否正在加载,load-more 是提示条的 DOM 元素。

以上就是原生 JavaScript 实现下拉刷新和上拉加载更多的示例代码,其中模拟数据加载部分需根据实际情况进行替换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现下拉刷新和上拉加载更多 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • coreldraw(cdr)2018安装教程详解

    CorelDRAW 2018安装教程详解 1. 检查系统要求 在安装 CorelDRAW 2018 之前,需要先检查系统是否符合最低系统要求。以下是 CorelDRAW 2018 的最低系统要求: 操作系统:Windows 7 SP1、Windows 8.1 或 Windows 10,32 位或 64 位版本; 处理器:Intel Core i3/5/7 或…

    其他 2023年4月16日
    00
  • 怎样批量修改文件后缀名(任何文件的扩展名)

    批量修改文件后缀名的攻略 要批量修改文件的后缀名,你可以使用以下步骤: 确定文件路径:首先,确定你要修改后缀名的文件所在的路径。这可以是一个文件夹路径或者一个包含多个文件的文件夹路径。 列出文件:使用文件管理器或者命令行工具列出该路径下的所有文件。这将帮助你获取文件的列表,以便后续操作。 编写脚本:使用脚本语言(如Python、Bash等)编写一个脚本来批量…

    other 2023年8月5日
    00
  • 如何使用WPS表格转换为歌词句首字母改大写

    如何使用WPS表格转换为歌词句首字母改大写 在WPS表格中,你可以使用公式和函数来将歌词句的首字母改为大写。下面是详细的攻略,包含两个示例说明。 步骤一:准备数据 首先,你需要在WPS表格中准备好你的歌词数据。确保歌词句位于一个单独的列中,例如\”A\”列。 示例数据如下: A hello world openai markdown 步骤二:使用公式转换首字…

    other 2023年8月19日
    00
  • C/C++ 中堆和栈及静态数据区详解

    C/C++ 中堆和栈及静态数据区详解 在C/C++中,堆、栈和静态数据区是三个重要的内存分配区域。它们在内存中的位置和分配方式不同,对于程序的内存管理和数据存储有着不同的影响。 堆(Heap) 堆是一块动态分配的内存区域,用于存储程序运行时动态分配的数据。堆的分配和释放是由程序员手动控制的,通过使用malloc、calloc、realloc等函数进行分配,使…

    other 2023年8月1日
    00
  • AMD Ryzen 7 1800X全球首超:全核狂飙5.2GHz 世界第一

    AMD Ryzen 7 1800X全球首超:全核狂飙5.2GHz 世界第一攻略 简介 AMD Ryzen 7 1800X是一款高性能的处理器,它在全球首次超频到了5.2GHz的全核频率,成为世界第一。本攻略将详细介绍如何实现这一壮举,并提供两个示例说明。 攻略步骤 步骤一:准备工作 在开始超频之前,确保你已经做好了以下准备工作:- 确保你的主板支持超频功能,…

    other 2023年7月28日
    00
  • EditText监听方法,实时的判断输入多少字符

    当我们需要实时判断用户在EditText中输入了多少字符时,可以通过添加一个TextWatcher来监听EditText的文本变化。下面是一个完整的攻略,包含两个示例说明: 首先,在XML布局文件中定义一个EditText控件: <EditText android:id=\"@+id/editText\" android:layou…

    other 2023年9月5日
    00
  • Windows Powershell 快捷键介绍

    Windows Powershell 快捷键介绍 Powershell 是 Windows 操作系统自带的一种命令行终端,使用快捷键可以大大提高我们的操作效率。本文将介绍 Powershell 中常用的快捷键,帮助你更快、更有效地完成工作。 常用快捷键 下面是 Powershell 中常用的快捷键及功能说明: Ctrl+C:终止当前正在运行的命令(类似于 L…

    other 2023年6月26日
    00
  • iso文件怎么打开?

    ISO文件是一种光盘映像文件,通常用于存储光盘上的数据和内容。要打开ISO文件,我们需要使用虚拟光驱软件,以模拟光盘在计算机中的运行。以下是详细的攻略: 步骤1:下载和安装虚拟光驱软件 我们可以选择市面上比较知名的一些虚拟光驱软件,例如 DAEMON Tools、PowerISO、Alcohol 120% 等。这里以 DAEMON Tools 为例进行讲解。…

    其他 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部