Estou tentando animar a rolagem para um ID específico no carregamento da página. Eu fiz muitas pesquisas e me deparei com isso:
$("html, body").animate({ scrollTop: $('#title1').height() }, 1000);
mas isso parece começar do ID e animar até o topo da página?
O HTML (que está no meio da página) é simplesmente:
<h2 id="title1">Title here</h2>
Respostas:
Você está apenas rolando a altura do seu elemento. offset () retorna as coordenadas de um elemento em relação ao documento e
top
param fornecerá a distância do elemento em pixels ao longo do eixo y:E você também pode adicionar um atraso a ele:
fonte
scroll
. Com isso em mente, você adicionaria a posição de rolagem atual debody
àoffset().top
posição do elemento que queremos visualizar. A soma resultante é o valor para o qual desejamos rolar.$('html, body').animate({ scrollTop: ($('html, body').scrollTop() + $('#title1').offset().top) }, 1000);
.offset().top
daria a você um número negativo neste caso. E isso realmente funciona apenas parabody
e,html
comooffset().top
irá fornecer o deslocamento superior do documento, não o pai de rolagem pretendido.Solução javascript pura com a função scrollIntoView () :
O parâmetro 'smooth' do PS agora funciona no Chrome 61 como julien_c mencionado nos comentários.
fonte
jquery-animate-body-for-all-browsers .
fonte
Existe um plugin jquery para isso. Rola o documento para um elemento específico, para que fique perfeitamente no meio da janela de exibição. Ele também suporta atenuações de animação, para que o efeito de rolagem fique super suave. Verifique este link .
No seu caso, o código é
fonte
tente com o seguinte código. faça elementos com o nome da classe rolagem de página e mantenha o nome da identificação nos
href
links correspondentesfonte
para rolagem simples, use o seguinte estilo
altura: 200 px; estouro: rolagem;
e use esta classe de estilo que div ou seção você deseja mostrar
fonte