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