Javascript 在固定元素内使用scrollTop并溢出-y:scroll
当我的内容位于指定了overflow-y:scroll的固定位置容器中时,我似乎无法使scrolltop工作 这是我的相关代码: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
/* 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是正确的