javascript:scrollTop和offsetTop之间的区别
在导航到javascript:scrollTop和offsetTop之间的区别,javascript,scroll,offset,Javascript,Scroll,Offset,在导航到元素后,元素的累积偏移量与滚动顶部的值之间是否存在可预测的关系 我天真地认为它们是相等的,但我遇到过scrollTop更大的情况(滚动位置在页面下方更远) 下面更准确地定义了这个问题: function TotalOffsetTop (e) { var offset = 0; do offset += e.offsetTop; while (e = e.offsetParent); return offset; } //navigate
元素后,
元素的累积偏移量与滚动顶部的值之间是否存在可预测的关系
我天真地认为它们是相等的,但我遇到过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!");
我的最终目标是找到最近的
标记,其起点位于当前视口顶部之上。这样我就可以相对于文档中的当前位置向后(和向前)跳转到书签
我是否应该使用一些其他措施来代替scrollTop
和累积offsetTop
我正在使用Chrome探索这个问题,但我希望最终找到至少在几种现代浏览器中都能工作的东西。我尽量避免使用jQuery。主要的区别是,不涉及太多细节:
offsetTop是只读的,而scrollTop是读/写的。
根据这一点,如果您使用Offsetop,您会更安全:
注意html元素的scrollTop属性
在早于版本8的Internet Explorer中,它检索滚动条
以物理像素大小表示的数量,而从版本8开始,它返回
以逻辑像素大小表示的数量。这是什么意思?如果浏览器不可用
在正常缩放级别(用户能够放大或缩小
网页:CTRL和+,CTRL和-,scrollTop属性有效
与版本8不同于早期版本
在版本8之前的Internet Explorer中,滚动量以默认像素大小计算,即使当前像素大小为
文件是不同的。
在Internet Explorer 8和Firefox、Opera、Google Chrome和Safari中,滚动量以当前像素大小计算
例如,如果缩放级别为200%,则scrollTop属性
检索版本8之前的值是版本8中的值的两倍
8表示相同的滚动位置
文本来源和关于这两个方面的更多信息:
谢谢!我的问题是寻找一种方法来计算它们之间的差异,但这给了我重构的想法,以避免location.hash=“#MyBookmark”
滚动到意外位置的问题。+1尝试避免jquery希望你能接受答案否?