0

我查看了所有相关的问题和答案,发现大多数都不完整(在这种情况下不起作用),所以我用详细的 JSFiddle 来问这个特定的问题。

我在层次结构深处有书签锚点,但需要计算它们在特定祖先中的垂直偏移量,以便平滑滚动到它们。

当前偏移量计算为:

function GetOffset($element, $parent)
{
    return {
        top: $element.offset().top + $parent.scrollTop(),
        left: $element.offset().left + $parent.scrollLeft()
    };    
}

但是滚动会在所选元素下结束,而不是显示它。

我使示例代码的其余部分尽可能冗长和明显。

更新:

我已经更新了小提琴以表明问题是由滚动面板的偏移引起的。这为项目提供了不正确的 offset().top 值,所以我猜问题出在我对offset().

JSFiddle:http: //jsfiddle.net/TrueBlueAussie/dtYpx/7/

有人可以告诉我如何正确计算偏移量以便滚动工作吗?最好只调整我的GetOffset()功能。

4

1 回答 1

0

在整理了其他问题后,问题是在添加到容器的 scrollTop() 时使用 offset() 而不是 position()。

这现在可以正常工作:

function GetOffset($element, $parent) {
    return {
        top: $element.position().top + $parent.scrollTop(),
        left: $element.position().left + $parent.scrollLeft()
    };
}

JSFiddle:http: //jsfiddle.net/TrueBlueAussie/dtYpx/9/

于 2013-08-23T10:06:13.120 回答