Estou procurando uma maneira de incluir um efeito de slide quando você clica em um link para uma âncora local, para cima ou para baixo na página.
Gostaria de algo em que você tenha um link assim:
<a href="#nameofdivetc">link text, img etc.</a>
talvez com uma classe adicionada para que você saiba que deseja que este link seja um link deslizante:
<a href="#nameofdivetc" class="sliding-link">link text, img etc.</a>
Então, se esse link for clicado, a página deslizará para cima ou para baixo até o local necessário (pode ser uma div, um cabeçalho, o topo da página etc.).
Isto é o que eu tinha anteriormente:
$(document).ready(function(){
$(".scroll").click(function(event){
//prevent the default action for the click event
event.preventDefault();
//get the full url - like mysitecom/index.htm#home
var full_url = this.href;
//split the url by # and get the anchor target name - home in mysitecom/index.htm#home
var parts = full_url.split("#");
var trgt = parts[1];
//get the top offset of the target anchor
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
//goto that anchor by setting the body scroll top to anchor top
$('html, body').animate({scrollTop:target_top}, 1500, 'easeInSine');
});
});
jquery
jquery-plugins
anchor
slide
ade123
fonte
fonte
$("a[href^=#]").click(function(e) { e.preventDefault(); var dest = $(this).attr('href'); console.log(dest); $('html,body').animate({ scrollTop: $(dest).offset().top }, 'slow'); });
history.pushState(null, null, dest);
como você está impedindo a mudança de localização de hash padrãoSupondo que seu atributo href esteja vinculado a uma div com o ID da tag com o mesmo nome (como de costume), você pode usar este código:
HTML
JAVASCRIPT - (Jquery)
fonte
name
. Quando você usa<a name="something"></a>
, também pode fazer referência a partir de fora, mas sua solução não fornece isso.Isso tornou minha vida muito mais fácil. Basicamente, você coloca sua tag de identificação dos elementos e seus pergaminhos sem muito código
http://balupton.github.io/jquery-scrollto/
Em Javascript
No seu html
Aqui estou eu descendo a página
fonte
fonte
+
com cordas ou vars concatena-los, como:"#some_anchor"
. Realmente, o segundo concatanchor_id + ""
não é necessário, acredito.Você também deve considerar que o alvo possui um preenchimento e, portanto, usa em
position
vez deoffset
. Você também pode contabilizar uma barra de navegação em potencial que não deseja sobrepor ao destino.fonte
history.pushState({}, "", this.href);
para manter o URL atualizadoMinha abordagem com o jQuery para fazer com que todos os links âncora incorporados deslizem em vez de pular instantaneamente
É realmente semelhante à resposta de Santi Nunez, mas é mais confiável .
Apoio, suporte
fonte
Eu fiquei com o meu código original e também incluí um desvanecimento no link 'back-to-top', usando esse código e um pouco daqui também:
http://webdesignerwall.com/tutorials/animated-scroll-to-top
Funciona bem :)
fonte
Convém adicionar os valores offsetTop e scrollTop , caso você esteja animando não a página inteira, mas algum conteúdo aninhado.
por exemplo :
fonte
Rolagem lenta SS
Esta solução não requer tags de âncora, mas é claro que você precisa corresponder o botão de menu (atributo arbitrário, 'ss' no exemplo) com o ID do elemento de destino no seu html.
ss="about"
leva você paraid="about"
Violino
https://jsfiddle.net/Hastig/stcstmph/4/
fonte
Aqui está a solução que funcionou para mim. Esta é uma função genérica que funciona para todas as
a
tags referentes a um nomea
Nota 1: Certifique-se de usar aspas duplas
"
no seu html. Se você usar aspas simples, altere a parte do código acima paravar target = $("a[name='" + name.substring(1) + "']");
Nota 2: Em alguns casos, especialmente quando você usa a barra adesiva do bootstrap, o nome
a
será oculto abaixo da barra de navegação. Nesses casos (ou em qualquer outro caso semelhante), você pode reduzir o número de pixels de sua rolagem para alcançar a localização ideal. Por exemplo:$('html,body').animate({ scrollTop: $(target).offset().top - 15 }, 'slow');
levará você aotarget
15 pixels restantes na parte superior.fonte
Eu me deparei com este exemplo em https://css-tricks.com/snippets/jquery/smooth-scrolling/, explicando todas as linhas de código. Eu achei que essa era a melhor opção.
https://css-tricks.com/snippets/jquery/smooth-scrolling/
Você pode se tornar nativo:
ou com jquery:
fonte
Ok, o método mais simples é: -
Dentro da função de clique (Jquery): -
HTML
fonte
Teste aqui:
http://jsbin.com/ucati4
fonte
A seguinte solução funcionou para mim:
fonte