将元素滚动到溢出的父容器的顶部

Scroll element to the top of an overflowed parent container

出于某种原因,我觉得这应该很容易,但我无法让它工作,而且我似乎无法在网上找到解决方案。

我有一个容器 (#container) 设置为溢出:滚动。里面是3个div,它们都和父容器有相同的高度(100%)。这些 div 中的每一个都包含一个 link.

假设您向下滚动到第二个 div 的一半,然后您应该能够单击第二个 div 中的 link,这将触发parent div 向上滚动到容器的顶部。

这是我的代码:

HTML

<div id="container">
    <div>
      <a href="#">link 1</a>
    </div>

    <div>
      <a href="#">link 2</a>
    </div>

    <div>
      <a href="#">link 3</a>
    </div>
</div>

CSS

#container {
    position: absolute;
    height: 100%;
    overflow: scroll;
}

div {
    height: 100%;
    width: 100%;
}

jQuery

$("a").click(function() {
    // triggers parent div to scroll up to the parent container
});

我设法使用 scrollTop 滚动到 div,但没有将 div 与父容器对齐。

我希望这是有道理的。感谢您的帮助。

编辑:

根据下面 pilar1347 的回答,这里有一个 Fiddle 代码在运行:https://jsfiddle.net/julienfrog/w2oqsqc8/2/

查看您的问题示例(ArcaneCraeda 建议的 jsfiddle)会很有帮助,但是 scrollTop(0) 是您要查找的内容吗?

在你的jQuery中:

$("a").click(function(){
    $("#container").scrollTop(0);
});

单击 link 时,这应该会滚动到 #container div 的顶部。

但是,如果您正在寻找的是让所选 div 捕捉到 #container 的顶部,那么您可能需要这样的东西:

$("a").click(function(){
    var clicked_idx = $(this).parent().index();
    var div_height = $(this).parent().height();
    var scroll_to = clicked_idx * div_height;

    $("#container").scrollTop(scroll_to);
})

注意:仅当所有 child div 的高度相同时才有效。