如何在没有动画的情况下完成scrollRight?

时间:2015-04-11 15:26:33

标签: javascript jquery html css

我试图在右侧滚动div标签,但这不起作用。但滚动左侧功能和向右滚动动画是完美的。但我想在没有动画的情况下向右滚动我尝试了类似这样的代码

$().ready(function(){
$("#container").scrollLeft(500); //This works
return hus;
});
function hus(){
$("#container").scrollLeft(-200); //This is not work
}

但我想滚动右侧没有动画我该怎么办?

3 个答案:

答案 0 :(得分:2)

我不确定你的意思"向右滚动"。

$("#container").scrollLeft(500) 将div滚动到500px的x位置(这可以)

$("#container").scrollLeft(-200)将div滚动到-200px的x位置,这不是有效位置,因为最小值是0px,这是最左边的位置,你不能指望它会"漂浮"像圆圈一样在右侧

scrollLeft: leftPos - 800没有"向右滚动"就像你的东西一样,它也将div元素向左滚动

所以,作为我的客人,有2个符合您问题的可能案例 让我们从:

开始
var leftPos = $('#container').scrollLeft();

我们认为:

  • leftPos = 1000,这是div的当前x位置
  • scrollWidth = 10000,从$('#container')[0].scrollWidth
  • 获取
  • width = 500,从$('#container').width()
  • 获取

如果您想从当前位置(即1200)向右移动200px,您可以使用:

$("#container").scrollLeft(leftPos + 200);

如果你想要移动到#200; 200px以外的正确位置"从右侧开始,即10000-500-200,您可以使用:

$("#container").scrollLeft(scrollWidth - width - 200);

希望这可以解决您的问题。 (对不起,我的语法不太好)

答案 1 :(得分:0)

您可以将持续时间设置为0或1 ms,这样可以解决问题:

var leftPos = $('#container').scrollLeft();
$("#container").animate({
   scrollLeft: leftPos - 800
}, 0);

答案 2 :(得分:0)

默认情况下,元素设置在左侧。从这个意义上讲,你无法在右侧滚动元素"" (a.k.a.左边)一开始。

在你的情况下:

 1. $("#container").scrollLeft(500); //This works

这样可行,因为您只需将元素移动到右侧即可获得500px。

2. $("#container").scrollLeft(-200); //This is not work

这不起作用,因为您已经在最左侧,您无法从外框中滚动元素。

 3. var leftPos = $('#container').scrollLeft();
    $("#container").animate({
       scrollLeft: leftPos - 800
    }, 500);
    });

我不确定你是什么意思"完美地工作"在这种情况下,由于缺乏上下文。

如果您想要的是将元素移动到左侧"没有动画,你可以设置$('#container').scrollLeft('200'); (因为你已经将元素设置为在最开始时向右滚动500px。)

您可以查看jsFiddle示例。如果要关闭动画效果,可以将持续时间设置为0。