2012-11-27 18 views
13

Im utilizzando il seguente per scorrere fino all'inizio di una pagina quando si fa clic su un determinato collegamento.jQuery scorrere alla fine della pagina

$('.myLinkToTop').click(function() { 
    $('html, body').animate({scrollTop:0}, 'slow'); 
    return false; 
}); 

Desidero creare un altro collegamento che scorra fino alla fine della pagina. Quanto segue funziona correttamente. Penso che tenti di scorrere 1000 pixel verso il basso nella pagina, quindi se la pagina è più corta allora scorre più velocemente di quanto dovrebbe, e se la pagina è più alta, allora non andrà fino in fondo. Come posso sostituire '1000' con l'altezza della finestra? Grazie

$('.myMenuLink').click(function() { 
    $('html, body').animate({scrollTop:1000}, 'slow'); 
    return false; 
}); 

So che questo codice salta alla parte inferiore della pagina, ma doenst scorrere senza intoppi come ho bisogno:

$(document).scrollTop($(document).height()); 
+0

si dovrebbe utilizzare jQuery facilitando plug-in e passare il parametro come swing, easeIn o easeOut quello che vuoi per il passaggio graduale – defau1t

+0

Solo un promemoria, il [ risposta attualmente accettata] (http://stackoverflow.com/a/13583503/383904) è in realtà errata/incompleta (vedi commento). –

risposta

31

Vostra esigenza di animare e passare alla parte inferiore del documento, si può ottenere con il codice qui sotto

HTML

<html> 
<head> 
</head> 
<body> 
    <div style="height:1500px"> 
     <button class="myLinkToTop" id="but1" >1</button> 
    </div> 
     <button class="myMenuLink" id="but1" >2</button> 
</body> 
</html> 

JS

$('.myLinkToTop').click(function() { 
    $('html, body').animate({ 
     scrollTop: $(document).height() 
    }, 'slow'); 
    return false; 
}); 

$('.myMenuLink').click(function() { 
    $('html, body').animate({ 
     scrollTop:0 
    }, 'slow'); 
    return false; 
}); 

Suggerire a questo link

http://jsfiddle.net/q6Wsp/6/

+1

Questo è un ** esempio errato **. Durante l'animazione in basso ** l'attenuazione ** non ha il tempo di terminare correttamente (rallentamento) la causa di calcoli errati dell'altezza - invece tocca il fondo alla massima velocità. –

4

provare questo codice

$(function() { 
    $('#scrlBotm').click(function() { 
     $('html, body').animate({ 
      scrollTop: $(document).height() 
     }, 
     1500); 
     return false; 
    }); 

    $('#scrlTop').click(function() { 
     $('html, body').animate({ 
      scrollTop: '0px' 
     }, 
     1500); 
     return false; 
    }); 
}); 
+0

Funziona ma l'animazione è due volte più veloce che dovrebbe essere – Evans

8

È necessario sottrai l'altezza del viewport dallo scrollHight:

$('#goToBottom').click(function(){ 
 

 
    var WH = $(window).height(); 
 
    var SH = $('body').prop("scrollHeight"); 
 
    $('html, body').stop().animate({scrollTop: SH-WH}, 1000); 
 

 
});
body{height:2000px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="goToBottom">GO TO BOTTOM</button>

3

per i documenti HTML molto lunghi scrollTop: $ (document) .height() non riesce, in questi casi è possibile utilizzare:

$('html, body').animate({ 
    scrollTop: $('#endOfPage').offset().top 
}, 1000); 

alla fine della pagina mettere un:

<div id="endOfPage">&nbsp;</div> 
1

codice salta alla parte inferiore della pagina con uniformemente:

$ (document) .ready (function() {

$ ('# selector'). Cliccare (function() {$ ('html, body'). Animano ({ scrollTop : $ (documento) .height() }, 1000); }); });

Con questo codice è facile scorrere la pagina verso il basso.

0

Per scorrere fino alla parte inferiore della pagina di provare questo:

 $('html, body').animate({ 
      scrollTop: $('html, body').height() 
     }, 'slow'); 
Problemi correlati