vue js 监听页面滚动触底 监听iframe滚动及触底 带你搞清 offsetHeight,scrollTop,scrollHeight区别

本文主要是介绍vue js 监听页面滚动触底 监听iframe滚动及触底 带你搞清 offsetHeight,scrollTop,scrollHeight区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想要监听页面滚动是否触底,你要先搞清 offsetHeight,scrollTop,scrollHeight区别,以及如何让应用,话不多说上代码💁🏻

offsetHeight: 它是包括padding、border、水平滚动条,但不包括margin的元素的高度。

⚠️:对于行内元素这个属性值一直是0,单位px,是只读元素。

scrollTop:表示在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度即“卷”起来的高度。

⚠️:在无滚动条时scrollTop==0恒成立,单位px,可读可设置。例如:“回滚到顶部”就可以用它来设置。

scrollHeight:当子元素比父元素高的时候,父元素不想被子元素撑高,于是出现了滚动条,在滚动的过程中子元素有部分会被隐藏掉,scrollHeight是 父元素高度offsetHeight + “卷”起来的高度 scrollTop,也可以理解为是子元素的offsetHeight值。



在了解了这三个属性的含义之后 理解触底就很简单了 其实就是 offsetHeight(显示区域高度) + scrollTop(卷起来的高度) - scrollHeight (子元素自身高度) >= -1 的时候就代表页面已经滑到底了~

接下来会有两种监听触底的案例:

1.div元素内内容触底

2.iframe内内容触底

 

我们先来看下第一种:div元素内内容触底

<div class="wrapper"><div class="content">独立寒秋,湘江北去,橘子洲头。看万山红遍,层林尽染;漫江碧透,百舸争流。鹰击长空,鱼翔浅底,万类霜天竞自由。怅寥廓,问苍茫大地,谁主沉浮?携来百侣曾游。忆往昔峥嵘岁月稠。恰同学少年,风华正茂;书生意气,挥斥方遒。...<div>
</div><style>
.wrapper {margin: 0 auto;background: #fff;height: 100vh;overflow: hidden;
}
.wrapper-content {height: 100vh;overflow-y: scroll;
}
<style><script>export default {created() {this.$nextTick(() => {const el = document.querySelector('.content');const offsetHeight = el.offsetHeight;el.onscroll = () => {const scrollTop = el.scrollTop;        const scrollHeight = el.scrollHeight;if (offsetHeight + scrollTop - scrollHeight >= -1) {console.log("到达底部了")}};});},}
<script>

 

第二种就是监听iframe内的滚动是否触底

<style>
.wrapper {margin: 0 auto;background: #fff;height: 100vh;overflow: hidden;
}
.wrapper-content {height: 100vh;overflow-y: scroll;
}
<style><div class="wrapper"><iframeid="iframepage"src="XXX.html"frameborder="0"width="90%"class="content"></iframe>
<div><script>export default {created() {this.$nextTick(() => { // iframe包裹const frameWindow = document.getElementById('iframepage').contentWindow;$(frameWindow).scroll(function () {const ifm =frameWindow.document.documentElement;const scrollHeight = ifm.scrollHeight;const offsetHeight = frameWidow.innerHeight;const scrollTop = frameWidow.document.body.scrollTop;if (offsetHeight + scrollTop - scrollHeight >= -1) {console.log("到底啦~")}});});},}
<script>

 

这篇关于vue js 监听页面滚动触底 监听iframe滚动及触底 带你搞清 offsetHeight,scrollTop,scrollHeight区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815791

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali