我查看了所有相关的问题和答案,发现大多数都是不完整的(在这种情况下不起作用),所以我用详细的JSFiddle来问这个特定的问题。
我在层次结构中有书签锚点,但需要计算它们在特定祖先中的垂直偏移,以便平滑滚动到它们。
当前偏移量计算为:
function GetOffset($element, $parent)
{
return {
top: $element.offset().top + $parent.scrollTop(),
left: $element.offset().left + $parent.scrollLeft()
};
}
但是滚动在所选元素下结束,而不是显示它
我使示例代码的其余部分尽可能冗长和明显。
更新:
我已经更新了fiddle,以表明问题是由滚动面板的偏移引起的。这为项目提供了一个不正确的offset().top值,所以我想问题出在我对offset()
的理解上。
JSFiddle:http://jsfiddle.net/TrueBlueAussie/dtYpx/7/
有人能告诉我如何正确计算偏移量,这样滚动就可以了吗?优选地仅通过调整我的CCD_ 2函数。
在解决其他问题后,问题是在添加到容器的scrollTop()时使用offset()而不是position()。
这现在工作正常:
function GetOffset($element, $parent) {
return {
top: $element.position().top + $parent.scrollTop(),
left: $element.position().left + $parent.scrollLeft()
};
}