jquery:设置向左滚动的动画

jquery:设置向左滚动的动画,jquery,jquery-selectors,Jquery,Jquery Selectors,我对jquery很陌生,似乎不明白为什么我的代码不能工作。我有一个水平布局,希望使用scrollLeft()函数(该函数非常适合此代码) 但在理想情况下,我希望对其进行动画处理,以便在单击“下一步”时,左滚动功能会有一个很好的动画效果 $("#next").click(function() { currentElement = currentElement.next(); scrollTo(currentElement); }); function scrollTo(e

我对jquery很陌生,似乎不明白为什么我的代码不能工作。我有一个水平布局,希望使用scrollLeft()函数(该函数非常适合此代码)

但在理想情况下,我希望对其进行动画处理,以便在单击“下一步”时,左滚动功能会有一个很好的动画效果

$("#next").click(function() {
    currentElement = currentElement.next();
    scrollTo(currentElement);    
});

function scrollTo(element) {
    $(window).animate({scrollLeft: element.position().left}, 750);
}

但是没有用。我做错了什么?

你会想要这样的东西:

$("#next").click(function(){
      var currentElement = currentElement.next();
      $('html, body').animate({scrollLeft: $(currentElement).offset().left}, 800);
      return false;
   });

$(“#下一步”)。单击(函数(){
var currentElement=currentElement.next();
$('html,body').animate({scrollLeft:$(currentElement.offset().left},800);
返回false;
}); 

我相信这应该是可行的,它是从一个
scrollTop
函数中采用的。

首先,我应该指出,如果你经常这样做,css动画可能会工作得最好,但我最终通过包装得到了想要的效果。scrollLeft inside。animate

$('.swipeRight').click(function()
{

    $('.swipeBox').animate( { scrollLeft: '+=460' }, 1000);
});

$('.swipeLeft').click(function()
{
    $('.swipeBox').animate( { scrollLeft: '-=460' }, 1000);
});

第二个参数是速度,如果使用某种类型的平滑滚动,还可以添加第三个参数。

scrollLeft()是一个jQuery函数,它只适用于DOM元素。animate()只能处理DOM样式的属性,不能处理函数。在我的情况下,我发现一些固定元素覆盖了ul的两个站点,这让我误以为ul是溢出的(事实上ul不是溢出的)。所以我离开了很多次,但都没用。我错认为ul是溢出的,但事实并非如此。似乎什么都没有发生。我想这是因为你去掉了scrollTo函数,它选择了下一个元素。我有一个巨大的ul,有多个li,水平主题有两个按钮#previous和#next,用于选择ul中的下一个或上一个项目以及我想要的内容。。就是很好地为导航设置动画。这是我最初的问题:理论上,您应该能够组合这两个函数,因为您运行
。单击
函数,但您正在调用其中的另一个函数。也许可以尝试
$(window)
而不是
$('html,body')
。对,但我想说的是(我很可能是错的)您没有在上面的代码中包含scrollTo函数,所以它实际上不是函数中的函数,即使使用$(window)
scrollTo
函数代码变成
$('html,body')).animate({scrollLeft:$(currentElement).offset().left},800)
,要将
滚动到
代码中,它应该是
$(窗口)。动画({scrollLeft:$(currentElement).position().left},750)。但是,您可能需要尝试的另一件事是将
滚动条中的
元素
部分转到
$(元素)
,然后查看是否有效。为什么返回false?什么类型的css动画?向左滚动不是css属性滚动到特定位置(即
const left=200;
),如下:
$(元素)
$('.swipeRight').click(function()
{

    $('.swipeBox').animate( { scrollLeft: '+=460' }, 1000);
});

$('.swipeLeft').click(function()
{
    $('.swipeBox').animate( { scrollLeft: '-=460' }, 1000);
});