le MEMO du WEB développeur
••• JQuery •••  Liste des Mémos, astuces et bonnes pratiques

Atteindre une ancre avec JQuery

→ Cliquez moi pour déplacer la page vers l'élémént d'identifiant #monancre ←



Mon ancre

Une ancre dans une page HTML est un point de repère dans la page vers lequel on va faire un lien afin que le haut de la fenêtre du navigateur se positionne directement sur ce point (au lieu d'avoir à scroller à la main pour y parvenir). Très pratique pour les pages avec beaucoup de contenu.

Pour créer une ancre, on affecte un identifiant quelconque, ici  id="monancre" à l'élément de la page vers lequel on veut diriger notre visiteur, et on rajouter un lien à l'endroit de la page où l'on propose au visiteur d'être redirigé. La page est donc rechargée.

Méthode classique d'ancrage en HTML

<div id="monancre"> </div>
<a href="http://www.monsite.fr/mapage.php#monancre"> 
 Ce lien vous redirige vers l'élément #monancre de la page 
</a>

Ancre JQuery : faire glisser une page vers un point défini de la page

JQuery nous offre une méthode plus élégante visuellement, en utilisant la fonction d'animation animate, utilisée sur memo-web.fr, qui  (ici par glissement), déplacera le navigateur vers l'ancre désirée.

Après avoir préalablement déclaré le script jquery, on peut par exemple proposer au visiteur de cliquer sur l'élément d'identifiant #redirection pour amener délicatement l'élément d'identifiant #monancre, en haut de notre page, grâce aux fonctions animate et scrollTop .

 

Code HTML :

<div id="redirection">
  Cliquez moi pour déplacer la page vers l'élément d'identifiant #monancre
</div>
<div id="monancre"> Mon ancre</div>

Code JQuery :

$(document).ready( function () {
   $('#redirection').click(function() {
     $('html,body').animate({scrollTop: $("#monancre").offset().top}, 'slow'      );
   });  
}) 

 

publié le 18/12/2011 par Memo Web
Astuce
Commentaire :
Bonjour, j'ai ma page home qui contient la partie contact en bas de la page. Mon menu de navigation contient un bouton "contact". Donc quand je suis sur la "home" et que je veux aller dans contact, je clique sur le bouton, et grace aux codes ci dessus, ca scroll jusqu'a ma partie contact. Jusque la tout va bien. Par contre, lorsque je suis sur une autre page, je voudrais que lorsqu'on veut aller dans contact, ca aille sur le haut de ma page "home" ( pour que l'internaute sache qu'il revient dans la page "home") et que ca scroll automatiquement a la partie contact. En gros je voudrais que mon bouton "contact" sur les autres pages autre que la "home" ait d'abord une premiere fonction qui l'emmene sur la page "home" puis une deuxieme fonction qui scroll automatiquement a la partie contact. Quelqu'un pourrait-il me dire si c'est possible, et si oui, comment faire? Merci :)
par inconnu, le 17/09/2014
Merci beaucoup pour ce petit tuto qui est très pratique et qui marche du premier coup ;je voudrais seulement savoir quels sont les autres effet autre que slow?
Merci
par inconnu, le 16/04/2014
.Merci beaucoup pour ce tuto, j'ai bien galéré avant de le trouvé. Merci
par inconnu, le 12/03/2014
J'ai aussi "offset is undefined" et mon ancre existe pourtant dans ma page
par inconnu, le 21/08/2013
offset is undefined
par inconnu, le 10/07/2013
Si offset is undefined, c'est que vous n'avez pas déclaré dans votre code votre élément qui constitue votre ancre (d'identifiant #monancre dans le code ci dessus). L'élément sur lequel va s'arrêter votre page.
par tarabusk, le 10/07/2013
Commenter le Mémo :

Détecter un click à l'extérieur d'un élément avec JQuery
Comment faire des opérations avec les attributs de style exprimés en px
Faire clignoter un élément avec JQuery
Parcourir tous les éléments d'une classe en JQuery
Modifier l'attribut src d'une image avec JQuery
Jquery récupérer les valeurs de checkbox, select et radio
Problème(ou pas):JQuery ferme automatiquement les balises HTML
Charger JQuery directement via les librairies google
StopPropagation() ou Empêcher un évenement de se propager aux parents de l'élément
Problème évenement click sous IE
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos