【发布时间】:2026-01-05 08:15:02
【问题描述】:
在导航到 <a> 元素后,<a> 元素的累积 offsetTop 与 scrollTop 的值之间是否存在可预测的关系?
我天真地认为它们会相等,但我遇到过scrollTop 更大(滚动位置在页面下方)的情况。
以下更准确地定义了问题:
function TotalOffsetTop (e)
{
var offset = 0;
do
offset += e.offsetTop;
while (e = e.offsetParent);
return offset;
}
//navigate to MyBookmark
location.hash = "#MyBookmark"
var BookmarkOffsetTop = TotalOffsetTop(document.getElementByID("MyBookmark"));
var CurrentPosition = document.getElementsByTagName("body")[0].scrollTop;
if ( CurrentPosition != BookmarkOffsetTop ) alert("Design Flaw!");
我的最终目标是找到最近的<a> 标记,其起点高于当前视口的顶部。这样我就可以相对于文档中的当前位置向后(和向前)跳转到书签。
我应该使用其他一些措施来代替scrollTop 和累积offsetTop吗?
我正在使用 Chrome 探索这个问题,但我想最终找到至少可以在几种现代浏览器中运行的东西。我试图避免使用 jQuery。
【问题讨论】:
-
+1 试图避免使用 jQuery
-
希望你能接受否?
标签: javascript scroll offset