前端JS必用工具【js-tool-big-box】学习,获取当前浏览器向上滚动还是向下滚动,获取当前距离顶部和底部的距离

news2025/1/13 3:33:35

这一小节,我们说一下 js-tool-big-box 添加的最新工具方法,在日常前端开发工作中,如果网页很长,我们就需要获取当前浏览器是在向上滚动,还是向下滚动。如果向上滚动,滚动到0的时候呢,需要做一些操作;如果浏览器是在乡下滚动,如果滚动到底部有一定距离的时候呢,也需要做一些操作。例如距离底部还差200px的时候呢,我们就可以提前请求下一页数据拉,不至于滚动到0的时候再请求,那就会有点晚,让用户等很久。

1 安装和引入js-tool-big-box

执行安装命令

npm i js-tool-big-box

在项目中引入browserBox对象,判断浏览器滚动方向和距离的公共方法,在这个对象下面

import { browserBox } from 'js-tool-big-box';

2 使用准备

以vue项目为例,想要浏览器滚动,我们就需要预备很多元素,使网页过长;除此之外,我们需要准备一个初始化变量,这个变量用来获取当前浏览器距离顶部的距离,代码如下:

<template>
  <div class="box-404">
    <p>js-tool-big-box</p>
    <p>做功能更丰富的前端JS库</p>
    <div class="box11">内容块1</div>
    <div class="box11">内容块2</div>
    <div class="box11">内容块3</div>
    <div class="box11">内容块4</div>
    <div class="box11">内容块5</div>
    <div class="box11">内容块6</div>
    <div class="box11">内容块7</div>
    <div class="box11">内容块8</div>
    <div class="box11">内容块9</div>
    <div class="box11">内容块10</div>
    <div class="box11">内容块11</div>
    <div class="box11">内容块12</div>
    <div class="box11">内容块13</div>
    <div class="box11">内容块14</div>
    <div class="box11">内容块15</div>
    <div class="box11">内容块16</div>
    <div class="box11">内容块17</div>
    <div class="box11">内容块18</div>
    <div class="box11">内容块19</div>
    <div class="box11">内容块20</div>
    <div class="box11">内容块21</div>
    <div class="box11">内容块22</div>
    <div class="box11">内容块23</div>
    <div class="box11">内容块24</div>
    <div class="box11">内容块25</div>
    <div class="box11">内容块26</div>
    <div class="box11">内容块27</div>
    <div class="box11">内容块28</div>
    <div class="box11">内容块29</div>
    <div class="box11">内容块30</div>
    <div class="box11">内容块31</div>
    <div class="box11">内容块32</div>
    <div class="box11">内容块33</div>
    <div class="box11">内容块34</div>
    <div class="box11">内容块35</div>
  </div>
</template>

<script>
import { browserBox } from 'js-tool-big-box';

export default {
  name: 'Page404',
  data () {
    return {
      val: '',
      lastScrollTop: 0, // 初始化滚动高度
    }
  },
  created() {

  },
  mounted() {
    window.addEventListener('scroll', this.handleScroll);
  },
  methods: {
    handleScroll() {
      
    },
  }
}
</script>

在以上代码中,我们初始化了很多 DIV 元素,用来生成滚动网页;

初始化了当前滚动高度,变量名为:lastScrollTop

mounted 钩子函数中,添加了 scroll 滚动监听函数;

添加 handleScroll 函数,稍后使用

3 使用方法

methods: {
    handleScroll() {
      let lastScrollTop = this.lastScrollTop;
      let scrollInfo = browserBox.getScrollInfo(lastScrollTop);
      this.lastScrollTop = scrollInfo.lastScrollTop;
      console.log('检测滚动的对象信息:', scrollInfo);
    },
  }

在以上代码中,我们补齐了 handleScroll 函数,获取当前浏览器向上滚动,还是向下滚动的方法名是 getScrollInfo 方法,我们看一下浏览器的效果吧

 如上图中,我们将浏览器乡下滚动了一点点,滚动了67px的距离,这个时候,方法告诉我们是在乡下滚动,当前距离顶部是67px,距离最底部是 3324px。

我们再往上滚动一点点,方法告诉我们,当前浏览器是在向上滚动,距离顶部还有20px,距离底部还有3371px啦。

4 方法总结

方法名返回值入参

getScrollInfo

返回一个对象,对象的属性分别为:

scrollDirection,值为 down || up;

lastScrollTop,表示当前距离浏览器顶部的距离,最小为0;

scrollBottom,表示当前浏览器距离底部的距离,最小为0.

第一个参数为必填项,表示外部初始化的那个

lastScrollTop值,需要注意的是,每次方法使用完,都要给外部的这个lastScrollTop重新赋值,保持最新,然后再次使用的时候,再传进去,就像上面的实例代码一样

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1810947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树二叉树

树 ​ 树是 n&#xff08;n≥0&#xff09;个结点的有限集。当 n 0时&#xff0c;称为空树。在任意一颗非空树中应满足&#xff1a; &#xff08;1&#xff09;有且仅有一个特定的称为根的结点。 &#xff08;2&#xff09;当 n > 1时&#xff0c;其余结点可分为 m&…

管理的三大关键:定目标、抓过程、拿结果

第一板斧&#xff1a;定目标 想清楚&#xff0c;写清楚&#xff0c;讲清楚&#xff0c;才能干明白 没有见过伟大&#xff0c;谈何伟大&#xff1f;很多管理者之所以定不好目标&#xff0c;是因为他们根本不知道也没见过好目标是什么样的&#xff0c;谈何定出好目标&#xff…

无源晶振振荡电路失效问题分析与解决策略

无源晶振&#xff08;晶体谐振器&#xff09;在电子设备中扮演着至关重要的角色&#xff0c;为数字电路提供稳定的时钟信号。然而&#xff0c;振荡电路一旦失效&#xff0c;可能会导致整个系统运行不正常。晶发电子将从三个主要方面分析无源晶振振荡电路失效的问题&#xff0c;…

测试开发面经分享,面试七天速成

1. get、post、put、delete的区别 a. get请求&#xff1a; i. 用于从服务器获取资源。请求参数附加在URL的查询字符串中。 ii. 对服务器的请求是幂等的&#xff0c;即多次相同的GET请求应该返回相同的结果。 iii. 可以被缓存&#xff0c;可以被收藏为书签。 iv. 对于敏感数据不…

【回调函数】

1.回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被用来调用其所指向的函数 时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方…

MySQL—多表查询—小结

一、引言 前面的博客已经全部学习完了关于多表查询。接下来对多表查询进行一个小结。 &#xff08;1&#xff09;多表查询主要是讲了两个方面 多表关系 &#xff08;不管业务关系如何的复杂&#xff0c;最终多表的关系基本上可以分为三类&#xff09; "一对多"、&qu…

每天一个数据分析题(三百五十九)- 多维分析模型

图中是某公司记录销售情况相关的表建立好的多维分析模型&#xff0c;请根据模型回答以下问题&#xff1a; 2&#xff09;产品表左连接品牌表的对应关系属于&#xff1f; A. 一对多 B. 一对一 C. 多对一 D. 多对多 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CD…

拯救学弟学妹计划之【论文帮手】是如何实现的?

功能介绍 概述 论文帮手是一款专为学术研究者设计的智能应用&#xff0c;旨在提供论文撰写和研究支持。应用通过深入了解用户的研究领域和需求&#xff0c;利用先进的搜索技术和人工智能&#xff0c;为用户提供定制化的学术资源和写作支持。 功能详述 1. 相关论文查找 此功…

Androidstudio项目加载不出来,显示Connect timed out

Android studio加载不出来所需要的环境依赖,99%的问题都是网络原因 解决办法有两个: 1.科学上网 2.使用国内的镜像 方法一自行解决,下面重点介绍方法二 在项目目录下找到gradle->wrapper->gradle-wrapper.properties 将项目的distributionUrl改为https://mirrors.cl…

SwiftUI七使用UI控件

代码下载 在应用中&#xff0c;用户可以创建一个简介来描述他们自已的个人情况。为了让用户可以编辑自己的简介&#xff0c;需要添加一个编辑模式并设计一个偏好设置界面。这里使用多种通用控件来展示用户的各种数据&#xff0c;并在用户保存他们所做的数据修改时更新地标数据…

【物料选型】东芝(Toshiba)车载器件选型和应用

东芝&#xff08;Toshiba&#xff09;拥有汽车电气化所需的丰富的半导体产品&#xff0c;专注于用于电动助力转向、电动水泵和电动空调风扇等应用的车载逆变器、电池管理系统和电机驱动。特别是高压和低损耗功率器件的表现优异。未来&#xff0c;东芝将继续提供面向未来的尖端半…

自动驾驶TPM技术杂谈 ———— 车用温度传感器

文章目录 介绍描述冷却液温度传感器进气温度传感器变速器油温传感器排气温度传感器EGR废气循环监测温度传感器车外温度传感器车内温度传感器日照温度传感器空调蒸发器出口温度传感器热敏铁氧体温度传感器 介绍 温度传感器是一种常见的传感器类型&#xff0c;广泛应用于温度检测…

Objective-C 学习笔记 | 回调

Objective-C 学习笔记 | 回调 Objective-C 学习笔记 | 回调运行循环目标-动作对&#xff08;target-action&#xff09;辅助对象通知回调与对象所有权深入学习&#xff1a;选择器的工作机制 参考书&#xff1a;《Objective-C 编程&#xff08;第2版&#xff09;》 Objective-C…

git服务器gitblit安装

1、下载 Gitblit 2、下载完后解压&#xff1a; 3、配制&#xff1a; 保存&#xff0c;退出编辑。 4、运行cmd&#xff0c;启用gitblit。 5、根据运行后的提示&#xff0c;也就是我们之间设置的port9990打开&#xff1a; 输入admin,admin就可以登录&#xff0c;这个账号密码&a…

LaTex中`\texorpdfstring`命令的使用方法

LaTex中\texorpdfstring命令的使用方法 \texorpdfstring命令 \texorpdfstring命令是hyperref包提供的一种替换宏&#xff0c;常用于标题中的公式显示。 命令后跟随两个参数&#xff1a; \texorpdfstring{TeXstring}{PDFstring}第一个参数TeXstring在正文标题中显示&#xf…

MySQL存储引擎详述:InnoDB为何胜出?

MySQL作为当前最流行的开源关系型数据库之一,其强大的功能和良好的性能使其广泛应用于各种规模的应用系统中。其中,存储引擎的设计理念是MySQL数据库灵活高效的关键所在。 一、什么是存储引擎 存储引擎是MySQL架构的重要组成部分,负责MySQL中数据的存储和提供了视图,存储过程等…

半导体光电子学最后总结(3)光子晶体

Matrix theory 波传输矩阵 (Wave-Transfer Matrix) 散射矩阵 (Scattering Matrix) 光在均匀介质中的传播公式矩阵化 Relation between Scattering Matrix and Wave-Transfer Matrix 级联系统的投射/反射系数&#xff1a;艾里公式 (Airy Formulas) 无损对称系统 斜入射波的传输…

Golang的context

目录 context的基本使用 为什么需要context Context interface 标准 error emptyCtx cancelCtx Deadline 方法 Done 方法 Err 方法 Value 方法 context.WithCancel() newCancelCtx WithCancel中propagateCancel cancel timerCtx valueCtx context的基本使用…

宽睿数字平台兼容TDengine 等多种数据库,提供行情解决方案

小T导读&#xff1a;最近&#xff0c;涛思数据与宽睿金融宣布了一项重要合作。在此之前&#xff0c;宽睿金融对 TDengine 进行了性能测试&#xff0c;并根据测试报告的结果&#xff0c;决定将 TDengine 接入宽睿数字平台&#xff0c;以提升高密度行情处理效率。本文将详细介绍此…

智慧监狱大数据整体解决方案(51页PPT)

方案介绍&#xff1a; 智慧监狱大数据整体解决方案通过集成先进的信息技术和大数据技术&#xff0c;实现对监狱管理的全面升级和智能化改造。该方案不仅提高了监狱管理的安全性和效率&#xff0c;还提升了监狱的智能化水平&#xff0c;为监狱的可持续发展提供了有力支持。 部…