javascript - 修复了内部带有可滚动 div 的 div - scrollTop() 返回 0
问题描述
我正在建立一个带有几个固定 div 的网站。它们中的每一个都固定在页面上滚动 100 像素。
在其中一个固定 div 中是一个可滚动的嵌套 div。可以在此 div 内滚动。我想在 javascript 中反馈我在 div 内滚动了多远,以注意到它何时到达 div 的底部。
对于整个站点,该功能scrollTop()
正在运行并返回我到目前为止滚动的像素。但是当我尝试scrollTop()
在内部 div 上使用该函数时,它总是返回 0。我不知道如何解决这个问题。
var aboutscroll = $('#timeline');
console.log(aboutscroll.scrollTop() + " px");
.timeline {
position: relative;
max-width: 1200px;
margin: 0 auto;
overflow: scroll;
height: 100vh;
}
#chapter2 {
width: 100vw;
position: fixed
}
<div class="row" id="chapter2">
<div class="black col-lg-6 col-xs-12" style="color:white">
<p>About</p>
</div>
<div class="white col-lg-6 col-xs-12">
<div class="timeline" id="timeline">
<div class="kontainer left">
<div class="content">
<h2>2017</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2016</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer left">
<div class="content">
<h2>2015</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2012</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer left">
<div class="content">
<h2>2011</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2007</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
</div>
</div>
</div>
解决方案
您需要在.scroll()
要监控的 DIV 上使用 jQuery 方法:
var aboutscroll = $('#timeline');
aboutscroll.scroll(function(){
//do stuff here
});
演示:
var aboutscroll = $('#timeline');
aboutscroll.scroll(function(){
$('#msg').html( $(aboutscroll).scrollTop() + " px" );
});
.timeline {
position: relative;
max-width: 1200px;
margin: 0 auto;
overflow: scroll;
height: 100vh;
}
#chapter2 {
width: 100vw;
position: fixed
}
#msg{position:fixed;top:0;right:0;max-width:80px;padding:15px;text-align:center;background:wheat;z-index:2;}
<div class="row" id="chapter2">
<div class="black col-lg-6 col-xs-12" style="color:white">
<p>About</p>
</div>
<div class="white col-lg-6 col-xs-12">
<div class="timeline" id="timeline">
<div class="kontainer left">
<div class="content">
<h2>2017</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2016</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer left">
<div class="content">
<h2>2015</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2012</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer left">
<div class="content">
<h2>2011</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
<div class="kontainer right">
<div class="content">
<h2>2007</h2>
<p>Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.</p>
</div>
</div>
</div>
</div>
</div>
<div id="msg"></div>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
推荐阅读
- file-sharing - 在android 11中共享时无法将文件附加到gmail
- html - 如何从输入 type="month" 中删除过去的年份,只显示当前年份到新的一年?
- azure-web-app-service - 我想将 azure bot 框架 web 应用程序 bot 项目和相关的应用程序服务转移到另一个 azure 帐户。有哪些可能的方法来做到这一点?
- rust - 错误:无法写入字节码。该系统找不到指定的路径。(os error 3). 编译基板节点模板时出错
- laravel - 为什么找不到从 JS 运行的 admin url?
- azure-devops - Azure DevOps Rest API 将现有代理池添加到项目
- node.js - 我应该为每个 Node 版本安装 Angular 吗?
- android - 使用 file_picker 插件时发生错误
- html - 突变观察者发出 n 次变化,这使我的其他功能变慢。有什么方法可以等待每次更改迭代然后继续?
- node.js - GithubAction 404 未找到 - 获取 https://registry.npmjs.org/Hexo