
Neste código demonstramos uma maneira simples de realizar um scroll suave entre âncoras dentro de uma mesma página, utilizando alguns métodos da biblioteca jQuery.
$(function() {
$('a[href*="#"]:not([href="#"])').click(function() {
var target = $(this.hash);
if (target.length) {
$('html, body').animate({ scrollTop: target.offset().top }, 1000);
return false;
}
});
});
Explicando o código:
$('a[href*="#"]:not([href="#"])')
- Adicionamos um evento de clique em todos os elementos de ancora que seus hrefs sejam ids de outros elementos;
var target = $(this.hash);
- this.hash retorna somente a hash da URL contida em um atributo href;
if (target.length)
- Retorna o lenght dos elementos. Caso retorne 0, ou seja, nenhum elemento encontrado com este id, não faz nenhuma ação;
$('html, body').animate({ scrollTop: target.offset().top }, 1000);
- Anima o scrollTop do html e body até o offset().top do elemento, ou seja, faz o html ir até o elemento passado como href.
Veja o código funcionando:
Comentários