Y a-t-il un moyen de faire défiler jusqu'à un lien d'ancre en utilisant jQuery ?
Comme :
$(document).ready(function(){
$("#gotomyanchor").click(function(){
$.scrollSmoothTo($("#myanchor"));
});
});
?
Y a-t-il un moyen de faire défiler jusqu'à un lien d'ancre en utilisant jQuery ?
Comme :
$(document).ready(function(){
$("#gotomyanchor").click(function(){
$.scrollSmoothTo($("#myanchor"));
});
});
?
Voici comment je le fais :
var hashTagActive = "";
$(".scroll").on("click touchstart" , function (event) {
if(hashTagActive != this.hash) { //this will prevent if the user click several times the same link to freeze the scroll.
event.preventDefault();
//calculate destination place
var dest = 0;
if ($(this.hash).offset().top > $(document).height() - $(window).height()) {
dest = $(document).height() - $(window).height();
} else {
dest = $(this.hash).offset().top;
}
//go to destination
$('html,body').animate({
scrollTop: dest
}, 2000, 'swing');
hashTagActive = this.hash;
}
});
Ensuite, il vous suffit de créer votre ancre comme ceci :
Destination 1
Une démo est également disponible ici : http://jsfiddle.net/YtJcL/
Je vais utiliser le simple extrait de code de CSS-Tricks.com :
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
Source: http://css-tricks.com/snippets/jquery/smooth-scrolling/
La meilleure solution que j'ai vue jusqu'à présent : jQuery: Smooth Scrolling Internal Anchor Links
HTML:
Faire défiler vers les commentaires
Script:
jQuery(document).ready(function($) {
$(".scroll").click(function(event){
event.preventDefault();
$('html,body').animate({scrollTop:$(this.hash).offset().top}, 500);
});
});
jQuery.scrollTo fera tout ce que vous voulez et plus encore!
Vous pouvez lui passer toutes sortes de choses différentes :
Voici le code que j'ai utilisé pour lier rapidement jQuery scrollTo à tous les liens d'ancrage :
// Smooth scroll
$('a[href*=#]').click(function () {
var hash = $(this).attr('href');
hash = hash.slice(hash.indexOf('#') + 1);
$.scrollTo(hash == 'top' ? 0 : 'a[name='+hash+']', 500);
window.location.hash = '#' + hash;
return false;
});
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.