Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
jquery:设置向左滚动的动画_Jquery_Jquery Selectors - Fatal编程技术网

jquery:设置向左滚动的动画

jquery:设置向左滚动的动画,jquery,jquery-selectors,Jquery,Jquery Selectors,我对jquery很陌生,似乎不明白为什么我的代码不能工作。我有一个水平布局,并希望使用scrollLeft功能,这与此代码完美配合 $("#next").click(function() { currentElement = currentElement.next(); scrollTo(currentElement); }); function scrollTo(element) { $(window).scrollLeft(element.position(

我对jquery很陌生,似乎不明白为什么我的代码不能工作。我有一个水平布局,并希望使用scrollLeft功能,这与此代码完美配合

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

function scrollTo(element) {
    $(window).scrollLeft(element.position().left);
}
但理想的情况是,我希望对其进行动画处理,以便在单击“下一步”时,向左滚动功能有一个很好的动画效果

$("#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;
   });

我相信这应该是可行的,它是从一个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,水平主题有两个按钮“上一个”和“下一个”,用于选择ul中的下一个或上一个项目以及我想要的内容。。就是很好地为导航设置动画。这是我最初的问题:理论上,您应该能够组合这两个函数,因为您运行.click函数,但您正在调用其中的另一个函数。也许试着用$window代替$'html,body'。对,但我想说的是,我很可能是错的,你没有在上面的代码中包含scrollTo函数,所以它实际上不是函数中的函数,即使使用$window,scrollTo函数代码也会变成$'html,body'。动画{scrollLeft:$currentElement.offset.left},800;,要将scrollTo代码完全按原样放入,它应该是$window.animate{scrollLeft:$currentElement.position.left},750;。但是,您可能需要尝试的另一件事是将scrollTo函数代码中的元素部分转换为$element,并查看其是否有效。为什么返回false?哪种css动画?向左滚动不是css属性滚动到特定位置,即常数左=200;像这样:$element.animate{scrollLeft:left},1000;