【前端 | CSS】滚动到底部加载,滚动监听、懒加载

背景

在日常开发过程中,我们会遇到图片懒加载的功能,基本原理是,滚动条滚动到底部后再次获取数据进行渲染。

那怎么判断滚动条是否滚动到底部呢?滚动条滚动到底部触发时间的时机和方法又该怎样定义?

针对以上问题我做了以下总结:

如何判断滚动条已经滚动到底部

先看一张图片解析

从图中不难看出:

滚动条滚动的最大距离+父盒子的高度 = 子盒子的高度;

也就是说子盒子的高度-父盒子的高度>=滚动距离时,滚动条触底;

那如何获取盒子的高度和滚动距离

大多数情况下子元素的高度是不确定的,会随着图片的加载子元素的高度越来越高,

我们可以通过

elemet.scrollHeight 获取子盒子的高度;

elemet.scrollTop 获取滚动距离;

elemet .clientHeight 获取父盒子的高度;

参考

【前端 | CSS】盒模型clientWidth、clientHeight、offsetWidht、offsetHeight_好喝的西北风的博客-CSDN博客只读属性Element.clientWidth对于内联元素以及没有 CSS 样式的元素为 0;该属性包括内边距(padding),但不包括边框(border)、外边距(margin)和垂直滚动条(如果存在)offsetWidth 是测量包含元素的边框 (border)、水平线上的内边距 (padding)、竖直方向滚动条 (scrollbar)(如果存在的话)、以及 CSS 设置的宽度 (width) 的值。https://blog.csdn.net/weixin_43340372/article/details/132210911?spm=1001.2014.3001.5501

示例代码

HTML

<!DOCTYPE html>
<html lang="CH-EN"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="viewport" content="width=device-width" /><title>flex</title></head><body><div class="container"><div class="item">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div></div></body>
</html>

js

<script>window.onload = () => {// 基本思路// 滚动体条所能滚动的最大高度 + continer的高度 = 子盒子(item)的高度;const container = document.querySelector(".container");console.dir(container);const item = document.querySelector(".item");container.addEventListener("scroll",() => {// 父盒子的高度const clientHeight = container.clientHeight;// 子盒子的高度(滚动盒子的高度)const scrollHeight = container.scrollHeight;// 滚动的最大距离const scrollHeight_clientHeight = scrollHeight - clientHeight;// 实时滚动距离const scrollTop = container.scrollTop;// 滚动的最大距离小于等于实时滚动距离时,滚动到了底部if(scrollHeight_clientHeight <= scrollTop){console.log("滚动到底部");}})};
</script>

style

<style>body,html {height: 100%;overflow: hidden;margin: 0;padding: 0;}::-webkit-scrollbar {width: 10px;background-color: gray;}::-webkit-scrollbar-thumb {background-color: black;border-radius: 5px;}.container {height: 500px;width: 400px;margin: 100px auto;background-color: rgb(6, 100, 64);border: blue 5px solid;overflow: auto;}.item {height: 800px;width: 200px;margin: 0 auto;color: #fff;line-height: 200px;overflow: hidden;background-color: rgb(235, 77, 77);}
</style>

线上示例

滚动加载线上示例

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

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

相关文章

【瑞吉外卖】Linux学习

Linux常用命令 Linux命令初体验 Linux的命令都是由一个或几个单词的缩写构成的 命令对应英文作用lslist查看当前目录下的内容pwdprint work directory查看当前所在目录cd [目录名]change directory切换目录touch [文件名]touch如果文件不存在&#xff0c;新建文件mkdir [目录…

HCIA---动态路由---RIP协议

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 前言 一.动态路由 二.动态路由协议分类 IGP&#xff1a;内部网关协议 EGP:外部网关协议 三.RIP协议概述 RIP版本分类&#xff1a; RIP三要素&#xff1a; 思维…

JSP的文件扩展名必须是.jsp吗

并不是 打开Tomcat目录下conf目录下的web.xml 也就是说,映射路径为xxx.jsp或者xxx.jspx就会访问jsp 可以修改

C语言每日一题:16:数对。

思路一&#xff1a;基本思路 1.x,y均不大于n&#xff0c;就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现&#xff1a; #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…

将exe应用打包成安装包

文章目录 前言一、打包exe文件1.安装Inno setup2.打包成安装包 二、测试安装包 前言 使用Inno setup应用来打包exe文件成安装包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、打包exe文件 1.安装Inno setup 官网网址&#xff1a;https://jrsoft…

EasyExcel下载xls、xlsx 出现文件格式与扩展名不匹配

是ContentType类型错误&#xff0c;如果需要导出xlsx就使用 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 如果使用xls就设置为&#xff1a;response.setContentType("application/vnd.ms-excel;charsetUT…

导出多个Excel文件并打包为压缩包下载

问题简述 之前系统里做的导出都是千篇一律的所有文件导在一个excel里&#xff0c;有现成的工具&#xff0c;现成的逻辑。 突然有那么一天&#xff0c;一切都不再现成了&#xff0c;我得把数据们导出为压缩包&#xff0c;一人一个Excel谁也不干涉谁。研究和参考了一下网上大神…

office安装包百度云

包含了office2010&#xff0c;office2013&#xff0c;office2016&#xff0c;office2019&#xff0c;office2021以及 新的office安装包 百度云网盘分享office 安装教程&#xff1a; 1安装前&#xff0c; 解压完成后&#xff0c;找到Setup.exe并双击 2等待安装&#xff0c;过程…

excel哪个版本好用,应该怎么选择

excelexcel哪个版本最好用&#xff1f;Excel软件是上班族必备的电脑办公神器&#xff0c;它带来了专业的数据整理和可视化随着excel的版本更新&#xff0c;可以使用的excel版本越来越多&#xff0c;让你的数据信息更加简洁直观那么&#xff0c;哪个版本的excel软件更有用呢 一…

R之Excel文件读取与程序包的安装调用

目录 方法一 方法二 1.用命令安装 2.从下拉菜单安装 三、加载所需安装包 方法一 方法二 四、使用新程序包读取数据 方法一 另存为 .csv 文件 这是wps的另存为 然后选择位置&#xff0c;重命名或更改格式为 .csv 这是excel 的另存为 文件 —— 另存为 —— 选择位置 …

spark 图计算 助力解决 dataframe中的链式依赖

链式依赖说明 name newName a b c d b c 我们需要的结果 即我们可以支持获取到链式转换的 起点 重点 以及链式的中间转换过程顺序数组. 特别说明: 出版只支持 单向 无分叉的图,其他复杂场景暂时未测试. 场景举例: 比如某件商品价格变化,我们需要知…

基础计算机算法函数,算法基础入门概述

著名计算机科学家沃思(NiklausWirth)提出一个公式&#xff1a;算法 数据结构 程序&#xff0c;其中算法是程序的灵魂。 01算法的定义及特性 在数学和计算机科学/算学之中&#xff0c;算法/演算法/算则法(algorithm)为一个计算的具体步骤&#xff0c;常用于计算、数据处理和自…

MapReduce 论文阅读笔记 MapReduce 简介

论文&#xff1a; MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat Google https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf MapReduce 是一种分布式系统中处理大数据方法。他提出是在 2004&#xff0c; jeff dean 和 Sanj…

2017 CS231n学习笔记(三)----损失函数和最优化(Loss Functions and Optimization )

video&#xff1a;https://study.163.com/course/courseMain.htm?courseId1004697005 slides&#xff1a;http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture3.pdf course notes&#xff1a;http://cs231n.github.io/ 文章所有内容来自Stanford university 课程 CS2…

时间和空间复杂度分析

前言 对于数据结构相关的博客文章&#xff0c;我是根据大学本科阶段《数据结构和算法》课程的内容和王争老师在即刻时间上的《数据结构和算法之美》系列课程&#xff08;墙裂推荐&#xff09;进行了一些排版参考和笔记性梳理。这些文章作为笔记总结&#xff0c;一方便是为了夯…

INT303 Big Data 个人笔记

又来到了经典半个月写一个学期内容的环节 目前更新至Lec{14}/Lec14 依旧是不涉及代码&#xff0c;代码请看学校的jupyter notebook~ Lec1 Introduction 介绍课程 TopicRangeTopic 1: Introduction to Big Data AnalyticsLec1~Lec3Topic2: Big data collection and visualiza…

日撸 Java 三百行(21 天: 二叉树及其基本操作)

注意&#xff1a;这里是JAVA自学与了解的同步笔记与记录&#xff0c;如有问题欢迎指正说明 目录 前言 一、一对多的结构&#xff1a;树形结构 二、二叉树 1.二叉树的体现运用 2.二叉树存储 三、二叉树遍历 1.树遍历的递归思想中的“三角抉择” 2.树的前、中、后序遍历…

C语言每日一练 —— 第21天:算法的应用

文章目录 前言一、算法简介1、推荐算法2、最短路算法3、最值算法4、排序算法5、压缩算法6、加密算法 二、为什么要学算法1、面试时2、工作中 三、算法能给我们带来什么能力的提升1、抽象问题的能力2、解决问题的能力3、编写代码的能力4、调试能力1&#xff09;画图2&#xff09…

C语言基础学习

**1.2 C语言程序设计入门三步骤 程序设计入门三步骤&#xff1a; &#xff08;1&#xff09;安装软件并开发HelloWorld程序。 &#xff08;2&#xff09;掌握基本的输入输出方法。 &#xff08;3&#xff09;理解该语言中程序的基本结构。 1.2.1 安装软件并开发第一个HelloWo…