Share Posted June 7, 2013 Greetings all, I am working on a site which includes simple "next" and "previous" buttons to navigate using "scrollTo". I have successfully configured scrollTo to navigate to multiple anchor elements moving forward (i.e. "#myDiv1, #myDiv2, etc.") using the "next" button, but I was wondering if it is possible to scroll back to the previous anchor using just the "previous" button (I don't want to scroll back to the beginning). I hope this is clear enough. Any advice would be greatly appreciated. Cheers, Ron P.S. Greensock rocks! I've only been using it for a short while, but even as a newbie I've been able to exceed my clients' expecations. Link to comment Share on other sites More sharing options...
Share Posted June 7, 2013 Since your divs are named chronologically, you can just use a variable to keep track of that number. Your next button will increment that variable and then you can just target the next div using that number. here is a very quick example: http://codepen.io/GreenSock/pen/36df4eabb4d7c78b562fd46b5f612d37 Also, you could use jQuery's next() and previous() methods to find the proper sibling of the current div. http://api.jquery.com/next/ Using this method, instead of incrementing and decrementing a number, you would just store a reference to "currently scrolled-to div" and then use each button to find the next() or previous() sibling and get its top offset. 1 Link to comment Share on other sites More sharing options...
Share Posted June 7, 2013 Hi Ron, The best choice I can think of is to use getLabelBefore and getLabelAfter methods. Create a paused timeline and for every step of the scrolling animation add a label. Once the timeline is ready you add the clicks events to your timeline and use those methods along with the tweenTo method var tl = new TimelineMax({paused:true}), nextBtn = $("button#nextBtn"), prevBtn = $("button#prevBtn"); tl .to(element, time, {vars}, 'label') .to(element, time, {vars}, 'label') .to(element, time, {vars}, 'label') .to(element, time, {vars}, 'label'); nextBtn.click(function() { tl.tweenTo(tl.getLabelAfter()); }); prevBtn.click(function() { tl.tweenTo(tl.getLabelBefore()); }); You can see the api reference for more info. Hope this helps, Cheers, Rodrigo. 1 Link to comment Share on other sites More sharing options...
Author Share Posted June 7, 2013 Thank you, gentlemen. This is exactly what I am looking for! I appreciate your taking the time to address this issue so thoroughly. This forum is such a great learning resource. Regards, Ron Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now