Como uso o jquery para rolar até a parte inferior de um iframe ou página?
224
Se você deseja uma boa rolagem de animação lenta, qualquer âncora com href="#bottom"
isso rolará você até o final:
$("a[href='#bottom']").click(function() {
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
return false;
});
Sinta-se livre para alterar o seletor.
scrollTop () retorna o número de pixels ocultos da área de rolagem, fornecendo-o:
realmente ultrapassará a parte inferior da página. Para que a rolagem realmente 'pare' na parte inferior da página, a altura atual da janela do navegador precisa ser subtraída. Isso permitirá o uso de atenuação, se necessário, tornando-se:
fonte
easeOutQuint
requer um plug-in, o próprio jQuery possui apenaslinear
eswing
.<!DOCTYPE html>
no Chrome, o Chrome retornará exatamente o mesmo valor para a altura da janela e do documento; nesse caso$(document).height()-$(window).height()
, sempre retornará 0. Consulte aqui: stackoverflow.com/questions/12103208/…Por exemplo:
fonte
Depois que esse tópico não funcionou para minha necessidade específica (rolar dentro de um elemento específico, no meu caso, uma área de texto), descobri isso muito além, o que pode ser útil para alguém que está lendo esta discussão:
Alternativa em planetcloud
Como eu já tinha uma versão em cache do meu objeto jQuery (o
myPanel
código abaixo é o objeto jQuery), o código que adicionei ao meu manipulador de eventos era simplesmente este:(obrigado Ben)
fonte
var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
Uma função simples que pula (rola instantaneamente) para a parte inferior da página inteira. Ele usa o built-in
.scrollTop()
. Não tentei adaptar isso para trabalhar com elementos de página individuais.fonte
$(document).scrollTop($(document).height());
Este funcionou para mim:
fonte
Se você não se importa com animação, não precisa obter a altura do elemento. Pelo menos em todos os navegadores que tentei, se você der
scrollTop
um número maior que o máximo, ele irá rolar até o final. Então, dê o maior número possível:Se você quiser rolar a página, em vez de algum elemento com uma barra de rolagem, basta
myScrollingElement
igual a 'body, html'.Como eu preciso fazer isso em vários lugares, escrevi uma função jQuery rápida e suja para torná-la mais conveniente, assim:
Então eu posso fazer isso quando adiciono um monte de coisas:
fonte
Os scripts mencionados nas respostas anteriores, como:
ou
$(window).scrollTop($(document).height());
não funcionará no Chrome e será agitado no Safari , caso a
html
tag no CSS tenha aoverflow: auto;
propriedade definida. Levei quase uma hora para descobrir.fonte
Eu uso esse código para rolar o bate-papo quando novas mensagens chegarem.
fonte