计算HTML书签相对于特定父容器的平滑滚动



我查看了所有相关的问题和答案,发现大多数都是不完整的(在这种情况下不起作用),所以我用详细的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()
    };
}

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

最新更新