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