上拉加载原理

2023-11-20

实现思路

之前写过一篇触底加载,经过一番苦学钻研,优化一下

样式方面:滚动区域是给固定高度,设置 overflow-y: auto 来实现。

接下来看看js方面的实现,其实也很简单,触发的条件是:可视高度 + 滚动距离 >= 实际高度 。例子我会使用vue来实现,和原生实现是一样的。

  • 可视高度(offsetHeight):通过 domoffsetHeight 获得,表示区域固定的高度。通过 getBoundingClientRect() 来获取高度,因为使用前者会引起浏览器回流,造成一些性能问题。
  • 滚动高度(scrollTop):滚动事件中通过 e.target.scrollTop 获取,表示滚动条距离顶部的px
  • 实际高度(scrollHeight):通过 domscrollHeight 获得,表示区域内所有内容的高度(包括滚动距离),也就是实际高度
export default {
  data(){
    return {
      isReachBottom: false,
      reachBottomDistance: 100
      scrollHeight: 0,
      offsetHeight: 0,
    }
  },
  mounted(){
    // 页面加载完成后  将高度存储起来
    let dom = document.querySelector('.div')
    this.scrollHeight = dom.scrollHeight
    this.offsetHeight = Math.ceil(dom.getBoundingClientRect().height)
  },
  methods: {
    onScroll(e) {
        let scrollTop = e.target.scrollTop
        let currentHeight = scrollTop + this.offsetHeight + this.reachBottomDistance//距离底部还有100px空余

        if(currentHeight < this.scrollHeight && this.isReachBottom){
          this.isReachBottom = false
        }
        if(this.isReachBottom){
          return
        }
        if (currentHeight >= this.scrollHeight) {
          this.isReachBottom = true
          console.log('触底')
          //执行加载数据操作
        }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上拉加载原理 的相关文章

  • React js Stripe 结账不起作用

    我正在尝试在 React js 应用程序中呈现条带结账默认表单
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 为什么在 Internet Explorer 中访问 localStorage 对象会引发错误?

    我正在解决一个客户端问题 Modernizr 意外地没有检测到对localStorageInternet Explorer 9 中的对象 我的页面正确使用 HTML 5 文档类型 并且开发人员工具报告该页面具有 IE9 的浏览器模式和 IE
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 如何将vue组件插入到contenteditable div中

    我想用 vue 创建简单的所见即所得编辑器 我发现只有一个在 vue js 上创建的真正的所见即所得编辑器 这里是 https quasar dev vue components editor 但我没有发现有插入图像的能力 其他 vue w
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • 利用maven项目创建一个web项目工程(图文详解)

    最近正开始学习java 老师布置的第一个作业便是用maven项目创建一个web项目工程 不会 跑去百度了半天 跳出来的全是我们csdn的教程 但到创建资源包的时候就没法跟着做了 因为显示已存在 没法跟着创建了 那些文章基本一样的讲法 都是默
  • 超详细的用IDEA整合SSM框架和profile 配置环境

    SSM作为现在最流行的开发框架 很大的提升了开发效率 一些同学在SSM基础上的整合一些更实用的开发基础框架 被用来作为快速开发的基础框架 本次实践主要是以下3个目标 从最基础的SSM框架做起 摸索和处理SSM框架整合中可能会遇到的问题 使用
  • 手机知识:手机的快充技术是什么,看完本文你就懂了

    目录 1 什么是手机快充 2 目前主流的手机快充协议 2 1 PD协议 2 2 PE协议 联发科 2 3 QC协议 高通 2 4 VOOC闪充 OPPO厂商 2 5 SCP FCP闪充 华为厂商 2 6 FlashCharge闪充 Vivo
  • 【前后端数据交互:Axios】

    前后端数据交互 Axios Axios 介绍 在前端页面展示的数据大多数都是通过访问一个API获取的 做这件事的方法有好几种 例如jquery ajax vue resource axios 而vue resource是vue插件 但3版本
  • 基于RGB颜色空间使用OpenCV-Python实现照片换底

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 前一阵子家人报考教师资格证考试 因报名需要将蓝底的数字相片换成白底的 老猿虽然在学习图像处理相关开发技术 但并没有熟练使用的图像编辑
  • BigDecimal精度问题

    BigDecimal精度问题 在近来项目展示价格的时候 遇到了一个问题 一个价格为99999 999的商品在购物车中的展示却是100000 00 原因归结于在原项目代码中 是采用BigDecimal的格式 然而前端需要展示的时候 采用的却是
  • .NET6.0的日志组件Log4net

    前言 不允许让没有任何日志监控的项目上线 所以说真正开发起来必须要有监控 相当于多一双眼睛帮着我们看项目在运行时会不会有什么问题 我们要不断的在每个环节写日志 这样发生异常我们可以快速知道哪里有问题了 就可以快速解决 目录 一 Log4ne
  • addEventListener()方法第三个参数(useCapture)与浏览器事件触发阶段

    最近面试中有被问到EventTarget addEventListener 方法的第三个参数useCapture 此方法就不着重讲解了 同时该方法的第三个参数可以传一个对象 可以参考mdn文档 讲解的很详细EventTarget addEv
  • 数据挖掘知识浅析

    一 什么是数据挖掘 数据挖掘是指从大量数据中提取或 挖掘 知识 数据挖掘是一种 黄金挖掘 从沙子堆中挖掘出黄金 找出最有价值的黄金 这种有机的价值物提取的过程称为 黄金挖掘 通过某种手段或者经验丰富人士 从海量的数据中找出有用的 数据 掌握
  • Markdown入门2-标题、引用、列表、代码、分隔线

    区块元素 网上推荐了很多撰写Markdown文件的软件 根据个人爱好可以自己去选一款 小编觉得选哪个都差不多 能出来效果就行呗 以下相关代码测试小编是在有道云笔记上进行的 我会把代码贴出来方便大家演练 1 标题 Markdown 支持两种标
  • fastadmin隐藏table操作栏拖动排序按钮

    记录 fastadmin隐藏table操作栏拖动排序按钮 在 js 文件中的 Table api init 中添加一下代码 dragsort url
  • C++ 第一阶段编程练习

    目录 1 1 编程练习 1 1 1 编程题目 第一题 第二题 第三题 第四题 第五题 第六题 第七题 1 2 编程讲解 1 2 1 题目一 1 2 2 题目二 1 2 3 题目三 1 2 4 题目四 1 2 5 题目五 1 2 6 题目六
  • rtklib源码 rtk差分解算,rtkpos和replos函数流程梳理

    rtklib源码 rtk差分解算 rtkpos和replos函数流程梳理 rtkpos函数梳理 总体流程 replos函数梳理 replos总体流程 1 通过satposs函数计算卫星的位置 速度等参数 2 通过zdres函数计算基站伪距和
  • 提升mysql服务器性能(系统参数与文件系统优化方案)

    加快TCP链接的回收 不应该使用CFQ cfq 完全公平队列 是anicipaory模式的替代品 没有过多的做预测性调度 而是根据给定的进程io优先级 直接来分配操作的顺序 最好使用 防止饥饿 xfs据说比较好 v
  • C# --- Struct and Record

    C Struct and Record Struct Record Struct struct是一种数据类型 和class非常类似 主要有以下的不同 struct是value type class是reference type 因为是val
  • log4j2配置文件

  • 机器学习-线性回归-多元梯度下降法

    目录标题 线性回归 多元线性回归 正规方程 线性回归 我们的回归方程常写成如下形式 h x 0 1 X 代价函数 J 12 i 1m h x i y i 2 看看代价函数到底是在干什么 如图 梯度下降是一个用来求函数最小值的算法 我们将使用
  • Echarts-折线图-设置线条颜色以及线条以下区域显示渐变颜色

    首先 先看折线图效果 1 设置线条颜色 在series中 数组项设置lineStyle属性 lineStyle 设置线条的style等 normal color red 折线线条颜色 红色 2 设置线条上点的颜色 也是图例的颜色 在seri
  • [OpenAirInterface实战-1] :什么是OAI?OAI常见问题解答

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 120490410 目录 前言 什么是软
  • 上拉加载原理

    实现思路 之前写过一篇触底加载 经过一番苦学钻研 优化一下 样式方面 滚动区域是给固定高度 设置 overflow y auto 来实现 接下来看看js方面的实现 其实也很简单 触发的条件是 可视高度 滚动距离 gt 实际高度 例子我会使用