Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript scroll to div with animation

I have a PhoneGap application that when it opens an HTML page, I want it to scroll to a specific <div> element. So far I've been able to make it do that with this script using jQuery:

<script>
$(document).delegate('.ui-page', 'pageshow', function () {
     var offset = $(this).find('#timeindicatordiv').offset().top;
     setTimeout(function () {
        $.mobile.silentScroll(offset);
        }, 0);
     });
</script>

This only gives me a jump directly to the <div> which looks a bit choppy.

Is there any way to give this a smooth animation?

like image 407
Luddig Avatar asked Oct 21 '13 15:10

Luddig


People also ask

How do you scroll in JavaScript?

To scroll the page with JavaScript, its DOM must be fully built. For instance, if we try to scroll the page with a script in <head> , it won't work. Regular elements can be scrolled by changing scrollTop/scrollLeft . We can do the same for the page using document.


1 Answers

$('.click').click(function(l){
   // prevent default action

   l.preventDefault();

   scrollToElement( $(this).attr('href'), 2000 );
});

var scrollToElement = function(el, ms){
    var speed = (ms) ? ms : 2000;
    $('html,body').animate({
        scrollTop: $(el).offset().top
    }, speed);
}
div {
    margin-top:1000px;
}
div:last-child {
    padding-bottom:1000px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#link1" class="click">link 1</a><br />
<a href="#link2" class="click">link 2</a><br />
<a href="#link3" class="click">link 3</a><br />


<div id="link1">Link 1</div>
<div id="link2">Link 2</div>
<div id="link3">Link 3</div>
like image 192
Shrikant Gangamwar Avatar answered Oct 13 '22 00:10

Shrikant Gangamwar