2016-10-01 5 views
0

Ich habe eine einfache jQuery Scroll-Funktion, die zu einem Div blättert, wenn ein Element angeklickt wird.jQuery Smooth Scroll beim Anzeigen von Element

Das Problem, das ich habe ist, dass, weil die Funktion sowohl ein Element ist die Anzeige und dann, um es Scrollen, die Scroll nicht, weil zur gleichen Zeit ist glatt wie die div gezeigt wird, beginnt das Scrollen

Ist Ich kann die Animation entweder verzögern, damit der #wrapper div geladen werden kann, und dann kann die Animation scrollen? Oder etwas in diese Richtung, so dass der Scroll glatt

Hier ist die jQuery-Funktion:

jQuery(document).ready(function($) { 
    $('.divOne').click(function() { 
    $('#wrapper').show(); 
    $('html,body').animate({scrollTop: $('.divTwo').offset().top}, 'slow'); 
    }); 
}); 
+0

gezeigt werden und was in der '# wird geladen wrapper'div, aus dem geposteten Code sollte es sofort auftauchen, also musst du uns erklären, warum es nicht ist. – adeneo

+0

Es zeigt nur die #Wrapper div, die img Elemente und p Elemente hat, aber weil es zur gleichen Zeit wie die Scroll startet angezeigt wird, ist die Schriftrolle nicht glatt –

+0

Vielleicht sollten Sie die Bilder dann laden – adeneo

Antwort

0

Sie die Bilder vorladen können, so dass sie bereits geladen, wenn jemand klickt, und das #wrapper Element mit es werden die Bilder sofort

jQuery(document).ready(function($) { 
    $('#wrapper img').each(function() { 
    var img = new Image(); 
    img.src = this.src; 
    }); 

    $('.divOne').click(function() { 
    $('#wrapper').show(); 
    $('html,body').animate({ 
     scrollTop: $('.divTwo').offset().top 
    }, 'slow'); 
    }); 
}); 
0

Versuchen delay(), um die Animation verwenden.

jQuery(document).ready(function($) { 
    $('.divOne').click(function() { 
    $('#wrapper').show(); 
    $('html,body').animate({scrollTop: $('.divTwo').offset().top}, 'slow').delay(2000); 
    }); 
}); 
0

Versuchen .fadeIn() statt .show() mit einem Rückruf verwenden. Siehe unten:

$(document).ready(function() { 

     $('.divOne').click(function(event) { 
      $('#wrapper').fadeIn(150, function() { 
       $('html,body').animate({scrollTop: $('.divTwo').offset().top}, 'slow'); 
      }); 
     }); 

    }); 
Verwandte Themen