我正在尝试在垂直滚动条到达特定点(特定div)时触发一些代码。
我在尝试到达的div的正确位置时遇到问题。
使用scrollIntoView
的确无懈可击,例如:
this.myDiv.scrollIntoView({ behavior: "smooth" })
触发该行时,我滚动到正确的位置。
当我运行document.documentElement.scrollTop
之类的线时,我在Y轴上获得了当前位置。当我运行this.myDiv.scrollHeight
时,我应该在div的Y轴上获得正确的位置,对吗?
问题在于,最后一行返回的数字与document.documentElement.scrollTop
返回的数字相比太低了。
我的代码如下:
handleScroll = () => {
const divScroll = this.myDiv.scrollHeight
const currentScroll = document.documentElement.scrollTop
if(currentScroll >= divScroll) {
//I reach this way too early, no where near my div at this point
}
}
<body>
...
<div id="myDiv" ref={(el) => { this.myDiv = el; }}> ... </div>
</body>
有人知道我如何获得div的正确位置,以便我能够分辨出用户是否达到目标吗?
编辑: 应该告诉我们,div的位置不是恒定的。每个用户都不同。
/ Crellee