Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 使用jQuery将div垂直滚动到所需位置_Javascript_Jquery_Scroll - Fatal编程技术网

Javascript 使用jQuery将div垂直滚动到所需位置

Javascript 使用jQuery将div垂直滚动到所需位置,javascript,jquery,scroll,Javascript,Jquery,Scroll,这是一个后续问题: 我最终以接受答案中解释的相同方式进行了滚动 现在有一个请求,要求以某种方式选择一个项目(例如,作为url参数或通过一些javascript调用),我应该将窗格滚动到滚动窗格中具有相应ID的项目。就像一个链接到一个锚()会工作 我想这样做一个javascript调用 function scrollTo(id) { $('#middle').magicallyScrollThatItemWouldBeVisible(itemid); } 但是jQuery中没有这个功

这是一个后续问题:

我最终以接受答案中解释的相同方式进行了滚动

现在有一个请求,要求以某种方式选择一个项目(例如,作为url参数或通过一些javascript调用),我应该将窗格滚动到滚动窗格中具有相应ID的项目。就像一个链接到一个锚()会工作

我想这样做一个javascript调用

function scrollTo(id) {
    $('#middle').magicallyScrollThatItemWouldBeVisible(itemid);
}
但是jQuery中没有这个功能(或者至少我不知道)。那么有没有办法做到这一点呢

我将在这里发布一个简单的JSFIDLE:

帮我把卷轴写出来

动画也可以


更新:如果不清楚,我希望它只与面板的左侧或右侧对齐,则它在该侧溢出(因此发生了最小可能的滚动量)

由于元素具有固定的宽度,您可以使用
.index()+1
计算元素的数量,并将其设置为该值(减去容器的宽度后)

如果希望元素居中,请使用
-Math.round(middle.width()/100)*50

小提琴:


沿着这些思路做的事情将是一个良好的开端:


这将使目标进入旋转木马的中心。我认为您必须添加一些额外的检查,以确保它没有滚动到远处,例如,如果您以第一个或最后一个元素为目标…除非这是内置于滚动功能中的(可能是).

我不确定我是否完全理解您的问题,但听起来您好像在问如何水平滚动到底部窗格中的选定项目。如果是,请尝试以下操作:

//get the position of the element relative to the parent ("middle")
var pos = $("#itemid").position(); 
if (pos){
    $("#middle").scrollLeft(pos.left);
}

从这里开始,如果需要,您可以使用
中间的宽度
将项目居中。

它不是jQuery,只是JavaScript,而且我实际上从未全部使用过,因此我不确定在这种情况下您必须如何处理它才能使其工作,但有一个功能:

yourElement.scrollIntoView();

这可能太好了,不太可能是真的,但会起作用吗?嘿,你应该很快从这个答案中得出答案!这就是我所需要的函数!这个解决方案的问题是元素的宽度是不同的,因此需要更多的计算,并且应该滚动最小可能的数量,使其不对齐到右侧。@SoonDead Updateed answer+fiddle。新代码向正确的方向滚动-刚好足以完全显示元素。这已经开始了!但是,例如,单击测试20和测试10之后,不应该滚动窗格,因为它已经可见(滚动的最小数量)@SoonDead这只是一个额外的行,以检查新的偏移量是否在边界内..更新的答案。完美!真的谢谢!该死的,它仍然不完美,因为它在浏览器中的行为不一致,滚动对齐到边界框的左侧或右侧是随机的抱歉,我答应你接受,但意识到有更多的问题。你仍然得到了一个向上的投票。你理解正确,但我希望它只对齐面板的左侧或右侧,它在那里溢出了(因此滚动的可能性最小)好的,我想我的答案会把它带到视野中,并将它向左对齐。你试过了吗?如果是,它会滚动到哪里?
//get the position of the element relative to the parent ("middle")
var pos = $("#itemid").position(); 
if (pos){
    $("#middle").scrollLeft(pos.left);
}
yourElement.scrollIntoView();