Qual é a melhor maneira de percorrer a janela do navegador para expandir elementos?
-
05-07-2019 - |
Pergunta
O que eu quero fazer é rolar para baixo da janela quando eu expandir elementos em minha página.
O efeito que eu estou tentando alcançar é como os comentários Stack Overflow. Se ele se expande para além da página, ele rola para baixo para caber todos os comentários na janela.
O que é a melhor maneira de fazer isso?
Edit:. Eu estou usando JQuery
Solução
Este plugin jQuery funcionou bem para mim: http://demos.flesler.com/jquery/scrollTo/
Outras dicas
Se você tem a vantagem de usar Prototype, você pode usar $(element).scrollTo()
.
Caso contrário, a idéia geral é calcular o acumulado deslocamento do elemento, em seguida, definir window.scrollTop
(e window.scrollLeft
) em conformidade.
Você pode fazê-lo muito bem com Scriptaculous (construída em cima de Prototype ):
new Effect.ScrollTo('someDiv',{...some parameters...})
Ele lhe dá um controle mais fino do que sozinho Prototype (atraso antes de eventos de início, duração e retorno de chamada (como afterFinish) que permitem desencadear outros efeitos ou qualquer outra coisa que você escolher. Você pode fazê-lo rolar de forma harmoniosa e bem, de modo que o doesn página 't de repente saltar.
Se você sabe o que o próximo elemento na fonte é que você realmente pode apenas saltar a esse elemento (location.href = "# ..."). Este seria usar o navegador nativo 'rolando' e não usa qualquer bibliotecas.
Você pode usar este código wich é bom, mas não perfeito. Com base na sugestão de blonkm
function scrollTo( Selector ){
$(Selector).before("<a name='scroll' id='scroll'></a>");
document.location.hash = 'scroll';
$('scroll').remove();
}
Isso deve funcionar. Requer jQuery, mas você já dizer que seu usando isso.