当所有元素的正确坐标已知时,执行javascript函数
我的页面上有几个section元素-每个section元素都有一个当所有元素的正确坐标已知时,执行javascript函数,javascript,scroll,Javascript,Scroll,我的页面上有几个section元素-每个section元素都有一个id-值(例如id=“description”),如果该id-值作为参数存在于URL中(?section=description),那么它将滚动到页面上的该section元素。 在此,我使用的是window.onload功能 问题在于,页面上各部分元素的坐标(以及宽度和高度)在正确(在浏览器显示所有内容之前)确定得太早,因此滚动条最终会出现在错误的位置 例如,当由窗口确定时,截面元素与id=“description”的坐标错误。o
id
-值(例如id=“description”
),如果该id
-值作为参数存在于URL中(?section=description
),那么它将滚动到页面上的该section元素。
在此,我使用的是window.onload
功能
问题在于,页面上各部分元素的坐标(以及宽度和高度)在正确(在浏览器显示所有内容之前)确定得太早,因此滚动条最终会出现在错误的位置
例如,当由窗口确定时,截面元素与id=“description”
的坐标错误。onload
:
DOMRect { x: 665.2833251953125, y: 789.7666625976562, width:
602.433349609375, height: 296.4666748046875, top: 789.7666625976562, right:
1267.7166748046875, bottom: 1086.2333374023438, left: 665.2833251953125 }
例如,当同时使用窗口时,正确的协调。onload
但另外使用timeOut
功能等待2秒:
DOMRect { x: 538.2999877929688, y: 860.2000122070312, width:
856.4000244140625, height: 155.60000610351562, top: 860.2000122070312,
right: 1394.7000122070312, bottom: 1015.8000183105469, left:
538.2999877929688 }
使用setTimeout不是解决方案。有没有其他方法来判断元素的坐标何时可以正确确定
非常感谢您的提示。您可以在上查看这个问题。我想如果您使用哈希而不是
?section=
,那么浏览器会自动为您完成滚动。例如,如果您有一个指向的链接,只要该元素可用,它就会自动滚动到id=description的元素。。。问题在于检测元素何时在页面中可见。解决方案是添加一个CSS样式,将无用的动画添加到要检测其可见性的元素中。动画无法执行任何操作(例如,从不透明度1变为1)。好处是您可以将事件侦听器添加到该元素上的animationstart事件中。因此,当元素变为可见时,它会导致播放一个无用的动画,这会导致一个animationstart事件,该事件会触发您的侦听器,您可以在其中滚动到该元素。您可以在上查看这个问题。我想,如果您使用哈希而不是?section=
,则浏览器会自动为您完成滚动。例如,如果您有一个指向的链接,只要该元素可用,它就会自动滚动到id=description的元素。。。问题在于检测元素何时在页面中可见。解决方案是添加一个CSS样式,将无用的动画添加到要检测其可见性的元素中。动画无法执行任何操作(例如,从不透明度1变为1)。好处是您可以将事件侦听器添加到该元素上的animationstart事件中。所以,当元素变得可见时,它会导致播放一个无用的动画,这会导致一个animationstart事件,它会触发您的侦听器,您可以在其中滚动到该元素。