javascript - 在滚动js上执行功能
问题描述
scroll
请告诉我当文档等于#footer
元素的位置时如何执行该功能?
$(document).on('scroll', function() {
var s = $(this).scrollTop();
var scroll_footer = $('#footer').position().top;
$("#console").text(s + " " + scroll_footer);
if (s >= scroll_footer) {
console.log("load");
}
});
#block {
background: red;
width: 250px;
}
#child_block {
padding-top: 100px;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.child {
width: 100px;
height: 100px;
background: blue;
margin: 15px 10px 10px;
15px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
#footer {
width: 100%;
height: 10px;
background: gray;
}
#console {
position: fixed;
left: 300px;
top: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="block">
<div id="child_block">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
</div>
<div id="footer"></div>
</div>
<div id="console"></div>
解决方案
我pageHeight
在您的 JS 中添加了一个变量,因此您现在正在计算以像素为单位的窗口高度 + 客户端滚动的量。当这两个值 >=scroll_footer
时,您的函数可以执行。
$(document).on('scroll', function() {
var s = $(this).scrollTop();
var pageHeight = window.innerHeight
var scroll_footer = $('#footer').position().top;
$("#console").text((s+pageHeight) + " " + scroll_footer);
if (s+pageHeight >= scroll_footer) {
console.log("load");
}
});
这是一个有效的代码笔: https ://codepen.io/paulmartin91/pen/dyNwJmp ?editors=1111
推荐阅读
- sql-server - 从哪里获得 Sql server 2019 32 位
- typescript - Angular 12 Chart.js - 无法显示甜甜圈
- postman - Postman - 从 NodeJS 运行的 Newman
- php - 如何在 PHP 的类构造函数中将数组作为参数传递
- kentico - 锁定特定角色/用户对实时站点(但不是暂存站点)的 /admin url 的访问
- javascript - ReactJS:在类组件中解构数据
- c# - C# Mysql 填充列表
- javascript - Material-UI 媒体查询不适用于卡片上的按钮?
- typescript - 打字稿:映射类型中的可选参数
- quarkus - Quarkus 原生 WARN 消息 RESTEASY002120: ClassNotFoundException - 反应式休息客户端