jquery: animate scrollLeft

匿名 (未验证) 提交于 2019-12-03 01:33:01

问题:

I'm quite new to jquery and can't seem to figure out why my code isn't working. I have a horizontal layout and want to use the scrollLeft() function (which works perfect with this code)

$("#next").click(function() {     currentElement = currentElement.next();     scrollTo(currentElement);     });  function scrollTo(element) {     $(window).scrollLeft(element.position().left); } 

But ideally, I would like to animate this so that when #next is clicked there is a nice animated effect to the scroll left function

$("#next").click(function() {     currentElement = currentElement.next();     scrollTo(currentElement);     });  function scrollTo(element) {     $(window).animate({scrollLeft: element.position().left}, 750); } 

But to no avail. What am I doing wrong?

回答1:

You'll want something like this:

 $("#next").click(function(){       var currentElement = currentElement.next();       $('html, body').animate({scrollLeft: $(currentElement).offset().left}, 800);       return false;    });  
I believe this should work, it's adopted from a scrollTop function.


回答2:

First off I should point out that css animations would probably work best if you are doing this a lot but I ended getting the desired effect by wrapping .scrollLeft inside .animate

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

The second parameter is speed, and you can also add a third parameter if you are using smooth scrolling of some sort.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!