
script : scroller v2.2.0
langage : javascript
catégorie : module
usage : Un effet de défilement doux pour les liens de vos pages pointant vers des ancres.
tags : effets spéciaux - ergonomie
D'ordinaire, lorsque l'on clique sur un lien vers une ancre (du genre : <a href="#une_ancre">lien</a>),
on est envoyé d'un seul coup au niveau de cette ancre.
Scroller est conçu pour remplacer ce téléportage
un peu brutal par un défilement doux.
Non content de faire assez classe, cela permet au visiteur de mieux s'y retrouver dans le contenu de la page.
Initialement conçu pour les ancres d'une page web, ce script peut aussi servir à recentrer la page sur n'importe quel
élément HTML.
A noter également : l'effet marche dans le sens vertical comme dans le sens horizontal. (Ou encore les deux à la fois.)
Eh bien ce site même utilise cet effet dans chaque page. Dans le menu latéral de cette page, la première série de liens permet de naviger dans la page. Cette navigation est adoucie par scroller.
Mais vous souhaitez peut-être aussi avoir une démonstration de ce que ça donne à l'horizontale... Voyez alors cette démo.
Pour ce qui est de charger le script, on procède tout à fait normalement,
en plaçant le code suivant entre les balises <head> et </head> de la page :
<script src="scroller.min.js" type="text/javascript"></script>
Ensuite, l'usage le plus simple (et le plus courant) sera d'appliquer l'effet à
tous les liens éligibles de la page. On placera alors ce script avant la balise </body> :
<script type="text/javascript">scroller.auto();</script>
Nota Bene : Si vous désirez faire un lien vers le haut de la page, évitez ceci
<a href="#"></a>, car pour éviter des conflit avec les autres javascripts de la page,
ce genre de liens n'est pas pris en compte. Au lieu de ça, placez plutôt, tout en haut de votre page, une ancre comme celle-ci :
<a href="#top"></a>
Dans certains cas, on pourra préférer n'appliquer l'effet qu'à un groupe de liens en particulier. On remplacera alors le code javascript précédent par celui-ci :
var mes_liens = document.getElementById("truc").getElementsByTagName("a"); scroller.applyTo( mes_liens );
Et pour déclencher un scrolling vers n'importe quel élément de la page, on pourra procéder selon cet exemple :
document.getElementById( "un_lien" ).onclick = function(){ var destination = document.getElementById( "destination" ); scroller.goTo( destination ); return false; }
Simplifiez-vous la sélection
Vous pourrez vous simplifier la sélection des éléments en faisant appel à la fonction
seek, également présentée sur ce site.
Seek vous permettra par exemple de faire un simple seek( "#truc a" ) (sur le modèle des sélecteurs css)
au lieu d'un fastidieux document.getElementById( "truc" ).getElementsByTagName( "a" ).
Le script accepte également quelques options. Celles-ci devront être paramétrée dans un tableau associatif, et passée comme argument de la fonction voulue.
// préparer les options dans un tableau associatif var options = { opt1 : valeur1, opt2 : valeur2, optN : valeurN }; // les passer dans la fonction voulue : scroller.auto( options ); // ou bien : scroller.applyTo( mes_liens, options ); // ou bien encore : scroller.goTo( destination, options );
Voici la liste des options disponibles :
| options | type | description | par défaut |
| onStart | Function | fonction callback exécutée au démarrage d'un scrolling | [rien] |
|---|---|---|---|
| onFinish | Function | fonction callback exécutée à la fin d'un scrolling | [rien] |
| onScroll | Function |
fonction callback exécutée à chaque étape de l'animation d'un scrolling Le premier paramètre fourni dans cette fonction reçoit le pourcentage d'avancement du scroll. Exemple : function( percent ){
|
[rien] |
| duration | Integer|Function |
Durée de l'animation, exprimée en millisecondes.
Si
Par défaut, |
[special] |
| ease | Float |
permet de donner un effet d'accélération ou de décélération à l'animation.
1 pour un animation linéaire |
0.17 |
Vous trouverez dans ce zip le script en version minifiée (3Ko) et en version commentée, ainsi qu'une page de démonstration.
compatibilité :
(autres navigateurs non testés)
Notez que ce module embarque plusieurs fragments de code présentés sur ce site : getPos, qui permet de mesurer la position d'un élément html, winDim, qui retourne les dimensions de la fenêtre, pageDim, qui donne celles de la page, scrolled (avec un "d"), qui relève le niveau de défilement de la page, easeInOut, qui permet de générer les effets d'accélération et de décélérantion, et enfin transfer, toujours pratique pour le traitement des options.