Javascript element.scrollTop始终返回0

Javascript element.scrollTop始终返回0,javascript,dom,Javascript,Dom,我试图获取元素的scrollTop位置,但它总是返回0。我做错了什么?我该如何修复它 var-inner=document.getElementById('inner'); addEventListener('scroll',function(){ console.log(内部.scrollTop); }) #外部{ 背景颜色:棕褐色; 高度:1000px; } #首先{ 背景色:深蓝色; 高度:200px; } #内在的{ 背景颜色:海蓝宝石; 高度:100px; } scrollTop

我试图获取元素的scrollTop位置,但它总是返回0。我做错了什么?我该如何修复它

var-inner=document.getElementById('inner');
addEventListener('scroll',function(){
console.log(内部.scrollTop);
})
#外部{
背景颜色:棕褐色;
高度:1000px;
}
#首先{
背景色:深蓝色;
高度:200px;
}
#内在的{
背景颜色:海蓝宝石;
高度:100px;
}

scrollTop始终返回0

正如@FelixKling在评论中指出的那样:

internal.offsetTop
用于此操作。返回您在该特定容器中滚动的金额。因此,由于
internal
没有滚动条,它从不滚动,因此
scrollTop
为0

但是,另一方面,返回当前元素相对于
offsetParent
节点顶部的距离

因此,基于
窗口
获取元素滚动量的公式为:

inner.offsetTop - document.body.scrollTop;

出于某种原因,从我的html和body标记中删除“height:100%”修复了这个问题


我希望这对其他人有帮助

我不知道为什么,但我唯一能做的就是使用
窗口。pageYOffset

window.addEventListener('scroll', function() {
  let scrollPosition = window.pageYOffset;
  if (scrollPosition >= 30) {
    headerContainer.classList.add('lg:bg-green-lightest');
  } else {
    headerContainer.classList.remove('lg:bg-green-lightest');
  }
});

来自:“Element.scrollTop属性获取或设置元素内容向上滚动的像素数。元素的scrollTop是元素顶部到其最顶部可见内容的距离测量形式。当元素内容未生成垂直滚动条时,其scrollTop值默认为0。”由于
internal
的内容不会生成滚动条,
scrollTop
0
。换句话说:
scrollTop
不是您要查找的属性。@FelixKling噢。我明白了!谢谢那么,我如何基于
窗口(或滚动元素)检查其滚动顶部呢?
inner.offsetTop-window.scrollY
在这种情况下可以工作,但我不知道这是否是最好的方法。谢谢!我的页面上有一个内容容器div,上面有一个“height:100vh”,这是在我的页面上实现的。