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

时间:2013-08-23 09:04:39

标签: jquery scroll anchor bookmarks

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

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

目前的偏移计算是:

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

但滚动在所选元素下方而不是显示它。

我使其余的示例代码尽可能长而且明显。

更新

我更新了小提琴以显示问题是由滚动面板的偏移引起的。这给出了一个不正确的偏移量()。项的最高值,所以我想问题是我对offset()的理解。

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

有人可以告诉我如何正确计算偏移量,以便滚动有效吗?最好只调整我的GetOffset()函数。

1 个答案:

答案 0 :(得分: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/