【前端知识之JS】如何实现上拉加载和下拉刷新

article/2025/10/12 20:08:55

前言

本系列主要整理前端面试中需要掌握的知识点。本节介绍如何实现上拉加载和下拉刷新。

文章目录

  • 前言
  • 一、介绍
  • 二、实现原理
    • 1、上拉加载
    • 2、下拉刷新


一、介绍

  • 下拉刷新和上拉加载这两种交互方式通常出现在移动端中;
  • 本质上等同于PC网页中的分页,只是交互形式不同;
  • 开源社区也有很多优秀的解决方案,如iscroll、better-scroll、pulltorefresh.js库等等,这些第三方库使用起来非常便捷;
  • 这里我们通过原生的方式实现一次上拉加载,下拉刷新,有助于对第三方库有更好的理解与使用

二、实现原理

1、上拉加载

在这里插入图片描述

属性含义
offsetTop元素的上外边框至包含元素的上内边框之间的像素距离,其他方向相同
offsetWidth元素两端算上外边框的宽度,其他方向相同
scrollLeft 和 scrollTop既可以确定当前元素的滚动状态,也可以设置元素的滚动位置
scrollWidth 和 scrollHeight确定元素内容的实际大小
clientWidth元素内容区宽度加上左右内边距宽度,即clientWidth = content + padding
clientHeight元素内容区高度加上上下内边距高度,即clientHeight = content + padding

上拉加载的本质是页面触底,或者快要触底时的动作
触底公式:scrollTop + clientHeight >= offsetTop

let clientHeight  = document.documentElement.clientHeight; //浏览器高度
let scrollHeight = document.body.scrollHeight;
let scrollTop = document.documentElement.scrollTop;let distance = 50;  //距离视窗还用50的时候,开始触发;if ((scrollTop + clientHeight) >= (scrollHeight - distance)) {console.log("开始加载数据");
}

2、下拉刷新

下拉刷新的本质是页面本身置于顶部时,用户下拉时需要触发的动作,主要分为三个步骤:

  • 监听原生touchstart事件,记录其初始位置的值,e.touches[0].pageY;
  • 监听原生touchmove事件,记录并计算当前滑动的位置值与初始位置值的差值,大于0表示向下拉动,并借助CSS3的translateY属性使元素跟随手势向下滑动对应的差值,同时也应设置一个允许滑动的最大值;
  • 监听原生touchend事件,若此时元素滑动达到最大值,则触发callback,同时将translateY重设为0,元素回到初始位置。
<main><p class="refreshText"></p ><ul id="refreshContainer"><li>111</li><li>222</li><li>333</li><li>444</li><li>555</li>...</ul>
</main>

监听touchstart事件,记录初始的值

var _element = document.getElementById('refreshContainer'),_refreshText = document.querySelector('.refreshText'),_startPos = 0,  // 初始的值_transitionHeight = 0; // 移动的距离_element.addEventListener('touchstart', function(e) {_startPos = e.touches[0].pageY; // 记录初始位置_element.style.position = 'relative';_element.style.transition = 'transform 0s';
}, false);

监听touchmove移动事件,记录滑动差值

_element.addEventListener('touchmove', function(e) {// e.touches[0].pageY 当前位置_transitionHeight = e.touches[0].pageY - _startPos; // 记录差值if (_transitionHeight > 0 && _transitionHeight < 60) { _refreshText.innerText = '下拉刷新'; _element.style.transform = 'translateY('+_transitionHeight+'px)';if (_transitionHeight > 55) {_refreshText.innerText = '释放更新';}}                
}, false);

监听touchend离开的事件

_element.addEventListener('touchend', function(e) {_element.style.transition = 'transform 0.5s ease 1s';_element.style.transform = 'translateY(0px)';_refreshText.innerText = '更新中...';// todo...}, false);

http://chatgpt.dhexx.cn/article/Cy3IS6OR.shtml

相关文章

大数据和人工智能到底是什么关系

大数据和人工智能的关系&#xff0c;首先要说什么是大数据。这些年来&#xff0c;大数据先是被神化&#xff0c;继而又被妖魔化&#xff0c;到了今天&#xff0c;其实谁也不知道别人所谓的大数据指的是什么。有时候大数据的定义里既有平台&#xff08;硬件&#xff09;又有分析…

大数据和人工智能AI的联系和区别

大数据和人工智能两个词是我们现在频繁听到的两个词汇&#xff0c;那么这两者之间到底有什么联系 首先我们要了解到什么是大数据&#xff1f;什么是人工智能&#xff1f;大数据就是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合&…

人工智能、机器学习、深度学习 三者关系

目录 1、AI ML DL关系 2、发展历程 2.1、人工智能&#xff08;ArtificiaI Intelligence&#xff09; 2.2、机器学习&#xff08;Machine Learning&#xff09; 2.3、深度学习&#xff08;Deep Learning&#xff09; 1、AI ML DL关系 为了赋予计算机以人类的理解能力与逻辑…

云计算、大数据和人工智能三者到底什么关系

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢&#xff1f;因为这三个东西现在非常火&#xff0c;并且它们之间好像互相有关系&#xff1a;一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成…

人工智能和大数据分析之间,主要有什么区别

首先来看看认知计算和人工智能的区别 人工智能的概念已经有二十多年&#xff0c;人工智能从历史和研究角度来讲主要目的是为了让机器表现的更像人类&#xff0c;我们称之为Intelligent Behavior。IBM的认知计算从技术角度上讲和AI是有很多共性的地方&#xff0c;比如机器学习&…

人工智能与大数据的完美结合

人工智能(AI)已经存在几十年了。然而&#xff0c;最近随着“大数据”的出现&#xff0c;它得到了越来越多的关注。维基百科对人工智能的释义如下: 在计算机科学中&#xff0c;人工智能研究的领域将自己定义为“智能代理AI和大数据&#xff1a;完美结合”的研究&#xff1a;任何…

大数据和人工智能的概念

大数据和人工智能的概念 概述大数据和人工智能领域的一些热门趋势。我们将看到世界如何通过数字化而改变&#xff0c;从而导致消费和工业领域的大数据现象&#xff1b;了解到数据量呈指数级增长&#xff0c;从太字节到艾字节再到泽字节&#xff1b;意识到计算机的处理能力增加…

云计算、大数据和人工智能之间的关系

大家好&#xff0c;这里是抖码课堂&#xff0c;抖码课堂专注提升互联网技术人的软硬实力。 这篇文章我们从下面的内容来聊下云计算、人工智能、大数据技术三者之间的关系 探讨什么是云计算&#xff0c;在这里分别探讨云计算的 IaaS、PaaS 以及 SaaS 探讨云计算和大数据技术之…

大数据属于人工智能吗?什么是大数据?

对于“大数据”(Big data)研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。大数据属于人工智能吗&#xff1f;本篇来解答一下这个问题。 大数据属于人工智能吗&#xff…

大数据和人工智能之间,主要有什么区别?

大数据vs.人工智能是一种公平的比较吗?在某种程度上&#xff0c;它是&#xff0c;但首先让我们先厘清它们之间的区别。 人工智能和大数据是人们耳熟能详的流行术语&#xff0c;但也可能会有一些混淆。人工智能和大数据有什么相似之处和不同之处?它们有什么共同点吗?它们是否…

AI和大数据的关系

近几年随着AlphaGO的骄人战绩&#xff0c;人工智能和大数据备受追捧&#xff0c;热度空前。而在实际接触中&#xff0c;大家对人工智能和大数据的认知普遍是“只知其名不知其意”&#xff0c;因此对企业而言&#xff0c;猎头的推荐也往往与岗位匹配度不高。那么被人们认为高深莫…

云计算、大数据和人工智能的关系

云计算、大数据和人工智能的关系 来源&#xff1a; 刘超&#xff08;popsuper1982&#xff09; https://www.cnblogs.com/popsuper1982/p/8505203.html 我今天要讲这三个话题&#xff0c;一个是云计算&#xff0c;一个大数据&#xff0c;一个人工智能&#xff0c;我为什么要讲…

大数据,云计算,人工智能之间的关系

一、云计算最初是实现资源管理的灵活性 我们首先来说云计算&#xff0c;云计算最初的目标是对资源的管理&#xff0c;管理的主要是计算资源&#xff0c;网络资源&#xff0c;存储资源三个方面。 1.1 管数据中心就像配电脑 什么叫计算&#xff0c;网络&#xff0c;存储资源呢&am…

关于大数据和人工智能发展的思考

10月12日&#xff0c;第七届中国智能产业高峰论坛在佛山开幕&#xff0c;在第一天的主论坛上&#xff0c;北京拓尔思信息技术股份有限公司副董事长、总裁施水才发表了主题为《大数据和人工智能发展的思考》的精彩演讲。 在演讲中&#xff0c;施水才先生从自身多年大数据技术和服…

大数据和人工智能的关系,超全解析

大数据拥抱云计算 在PaaS层中一个复杂的通用应用就是大数据平台。大数据是如何一步一步融入云计算的呢&#xff1f; 1数据不大也包含智慧 一开始这个大数据并不大。原来才有多少数据&#xff1f;现在大家都去看电子书&#xff0c;上网看新闻了&#xff0c;在我们80后小时候&…

云计算、大数据、人工智能的关系

云计算,大数据,人工智能以及他们的关系。 一、云计算最初是实现资源管理的灵活性 我们首先来说云计算,云计算最初的目标是对资源的管理,管理的主要是计算,存储,网络资源。 1.1 管数据中心就像配电脑 什么叫计算,存储,网络资源呢?就说你要买台笔记本电脑吧,你是不是…

云计算、大数据和人工智能之间的关系----详细说明

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢&#xff1f;因为这三个东西现在非常火&#xff0c;并且它们之间好像互相有关系&#xff1a;一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成…

AI与大数据的关系

最近在忙着专业分流的事情&#xff0c;自己纠结的专业主要就是人工智能和大数据&#xff0c;找了很多资料&#xff0c;终于整理出二者的关系。 原文地址&#xff1a;https://www.sohu.com/a/224177824_764294 更专业一些的分析可以看这篇文章&#xff1a;https://blog.csdn.ne…

大数据与人工智能

转自&#xff1a;http://sanwen8.cn/p/G4beJX.html 技术不足导致移动互联网难以催生出更多的新应用和商业模式&#xff0c;为突破瓶颈&#xff0c;新一轮更激动人心、更值得期待的技术革命风暴已经诞生&#xff0c;将成为未来10年乃至更长时间内IT产业发展的焦点&#xff0c;它…

浅析大数据与人工智能

理念篇 首先给大家讲讲什么是数据。 有的朋友可能认为有了计算机才有数据&#xff0c;其实不然。简单而言&#xff0c;数据就是可以被我们进行定量分析的记录。大家可以看看左边这幅图&#xff0c;是四百多年前第谷布拉赫记录下的行星与恒星在太阳系内运动的轨迹。当时开普勒做…