无限加载也叫上拉自动加载、瀑布流、滑动底部加载等,具体指的是页面刚开始不加载全部内容, 先加载首屏或者用户屏幕可见内容,当用户滑动页面到底部后,页面才自动加载更多内容。

通过window.scrollY获取界面滚动多少距离
通过windwo,innerHeight获取视窗的高度
然后获取列表容器的高度 contentHeight

window.scrollY + window,innerHeight < contentHeight
说明列表底部还没有显示出来

window.scrollY + window.innerHeight === contentHeight
说明列表底部已经到底部,然后进行加载下一页

下面是我模拟的h5无线加载的demo,用react语法写的函数组件。需浏览器打开手机开发模式选择iphone5或者iphone6,7,8类似屏幕大小屏幕

header.less代码

.header{background-color: #0066FF;color: white;height: 32px;display: flex;flex-direction: column;justify-content: space-between;line-height: 32px;>span{padding: 0 20px;font-size: 14px;}
}

header.js文件代码

import './header.less'
import React, { useState, useEffect, useRef } from 'react';
const dataArr = [{ name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }, { name: 'hello' }]
function Header() {const windowHeight = window.innerHeight;const headerRef = useRef(null);let [data, setData] = useState(dataArr);useEffect(() => {// Update the document title using the browser APIwindow.addEventListener('scroll', (event) => {console.log('windowHeight', windowHeight, 'window.scrollY', window.scrollY, 'elementHeight', headerRef.current.clientHeight)if (headerRef.current.clientHeight - windowHeight - window.scrollY < 10) {console.log("距离底部10了加载数据")data = data.concat(dataArr)setData(data)}})});return (<div className="header" ><div ref={headerRef}>{data.map((item, index) => {return (<div key={index}>{item.name}{index}</div>)})}</div></div>)}
export default Header;

瀑布流无限加载的原理相关推荐

  1. 利用ajax实现织梦dedecms瀑布流无限加载功能

    该功能主要用到AJAX技术! 一.首先找到并打开/plus/list.php文件,在里面找到如下代码: require_once(dirname(__FILE__)."/../include ...

  2. ajax瀑布流插件,jQuery瀑布流无限加载插件:jquery.falless.js

    慌慌张张,匆匆忙忙,为何生活总是这样? 难道说,我的理想,就是这样度过一生的时光?........... 真的是一年一年飞逝而去,而人的一生,又有几个一年? 第一个四年即将结束,得到了什么?又失去了什 ...

  3. 小程序瀑布流无限加载

    由于想做成瀑布流,故一开始使用如下的方式: .waterfall-container {column-count: 2;column-gap: 30rpx; } 但是,由于这种  column-cou ...

  4. html动态加载图片,javascript实现瀑布流动态加载图片原理

    本文实例为大家分享了js瀑布流加载效果,动态加载图片,供大家参考,具体内容如下 鼠标滚动事件,当鼠标滚动到下边,动态加载图片. 1. HTML代码 js实现瀑布流效果-动态加载图片 2. CSS代码 ...

  5. JS——瀑布流无限加载以及动态生成a标签

    如何实现瀑布流排列效果?看下面这张图 通过js去比较每张图片的高度,然后进行排列. 这是一个模拟的瀑布流的list列表项 <div id="main"><div ...

  6. Ajax实现瀑布流动态加载网页

    瀑布流的动态加载效果是我一直以来觉得最喜欢的效果之一了.最近在工作中遇到了一个情景,当我登录到系统中时,需要向另一个系统发送多次接口查询数据,之后再将这些数据显示到页面上.这就存在了这样一个问题:页面 ...

  7. uniapp实现瀑布流懒加载实现和无限上拉加载更多

    效果图: 说明: 函数说明:传入一个数组,循环获取图片高度,会根据把原数组拆分成两个数组,放在两列,                 计算单列累计高度,对比高度值的大小,实现瀑布流的布局,       ...

  8. js无限加载分页原理实现

    一般来说,很多网页都是用瀑布流进行内容显示.当可见区域滚动到底部时,自动加载下一段页面.原理显而易见,观察滚动条底部和窗口底部的距离便可. 当滚动条底部距离窗口底部一定距离时,触发ajax请求下一页内 ...

  9. jq.ajax+php+mysql实现瀑布流缓冲加载数据

    效果图如下: html+css代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content- ...

最新文章

  1. react项目---基本语法字符串数组(6)
  2. String字符串编码解码格式
  3. 在 Linux 下忘记 mysql root 密码的解决方法
  4. js+css实现骰子的随机转动
  5. python wx窗口无法关闭_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
  6. 亚马逊正发力人工智能
  7. VTK:简单操作之RandomSequence
  8. SAP CRM BSP UI gif and color handling
  9. karaf osgi_在OSGi中为Karaf构建Camel-CXF REST服务–组播和聚合
  10. 前端学习(1402):多人管理22验证joi
  11. UNIX环境高级编程之第4章:文件和目录
  12. PDF文本内容批量提取到Excel
  13. 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
  14. 计算机硬盘检测不到,电脑经常检测不到硬盘怎么办
  15. transition详解【过渡属性】
  16. TC358775XBG是一颗将MIPI DSI信号转换成single/ dual -link LVDS的芯片,最高分辨率支持到1920x1200
  17. 考研数学汤家凤笔记第一章:极限与连续
  18. matlab工具箱中英对照,MATLABa工具包中英对照
  19. 一个硅谷网工的四年打怪升级史!
  20. 2018国赛数学建模笔记

热门文章

  1. [日常] SinaMail项目和技术能力总结
  2. 仿照写的sina微博的简单爬虫
  3. 耐心,细心,贴心,静心
  4. K210学习笔记(五)——MAIX BIT(K210)与STM32串口通讯
  5. 一文读懂|2021年数据库领域精彩回顾
  6. 天龙八部与珍珑(文/《北京青年报》记者 郭婷婷)
  7. java 邮件 已读回执_java – 在Firebase群组消息传递应用中实施已读回执功能
  8. android pm命令不可用,adb命令pm工具讲解
  9. 【阿朱洞察】中国云计算市场未来3年展望
  10. android轻音乐,「睡眠周期时钟」搭配轻音乐,让你好好睡又舒服醒(Android)