Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在固定元素内使用scrollTop并溢出-y:scroll_Javascript_Jquery_Html_Css_Css Position - Fatal编程技术网

Javascript 在固定元素内使用scrollTop并溢出-y:scroll

Javascript 在固定元素内使用scrollTop并溢出-y:scroll,javascript,jquery,html,css,css-position,Javascript,Jquery,Html,Css,Css Position,当我的内容位于指定了overflow-y:scroll的固定位置容器中时,我似乎无法使scrolltop工作 这是我的相关代码: /* some container with many large content blocks inside */ #container { position: fixed; width: 300px; height: 300px; overflow-y: scroll; } /* button that has a data-pa

当我的内容位于指定了overflow-y:scroll的固定位置容器中时,我似乎无法使scrolltop工作

这是我的相关代码:

/* some container with many large content blocks inside */
#container {
    position: fixed;
    width: 300px;
    height: 300px;
    overflow-y: scroll;
}

/* button that has a data-path attribute that specifies where the container should scroll to*/
$(".button").on("click", function(){
    var path = $(this).attr("data-path");
    var anchor = $("#" + path);
    var position = anchor.position().top;
    $("#container").animate({scrollTop: position});
});
我相信这把小提琴很好地说明了我的困境:

如果从上向下滚动到某个元素,效果会很好。在那之后,所有的赌注都输光了。它完全不能从顶部以外的任何位置滚动。它要么严重地漏掉了标记,要么一直滚动到顶部,即使提供给它的位置值看起来是正确的


当然,我在这里遗漏了一些东西,但我不确定我不理解的是什么。谢谢你的帮助

计算位置时缺少的是scrollTop,因此如果视图已滚动,则需要将其添加到计算中
var position=anchor.position().top+$(“#container”).scrollTop()


完美!我不明白scrollTop期望的是绝对位置,而不是相对位置。我使用position()是因为担心scrollTop无法为溢出的固定容器中的元素返回正确的值。我很高兴解决方案如此简单。谢谢你的帮助。完美的回答,你救了我一天!有没有一种方法可以在没有动画的情况下实现这一点?回答晚了,但为了将来的参考,只需替换
$(“#容器”).animate({scrollTop:position})带有
$(“#容器”)。滚动顶部(位置)如果我记得jQuery是正确的