Home » jQuery » Un indicateur de scroll pour ses articles
Un indicateur de scroll pour ses articles
Placer une barre dynamique qui indique au lecteur où il en est dans sa lecture
Un premier exemple, le scroll bar de CSSTricks
On trouve sur internet de nombreux exemples, plus ou moins complexes, d’indicateur de scroll. Ceci est utile pour des blogs ou des sites affichant de longs articles, et cela rajoute au design global. Il s’agit de cette barre souvent placée au dessus ou sous le menu, qui progresse en fonction de l’action de l’internaute sur le scroll de la page
On peut relever deux exemples fonctionnels :
Un exemple fiable, tiré du site CSSTricks : (cliquez sur le lien pour voir la page originelle)
Dans la partie html, on va créer un bloc pour notre barre de progression
Enfin, la partie la plus importante dans cet exemple , le jquery qui va faire intéragir l’action du scroll à la progression de notre barre
$(document).ready(function() {
var getMax = function(){ return $(document).height() - $(window).height(); }
var getValue = function(){ return $(window).scrollTop(); }
if ('max' in document.createElement('progress')) { // Browser supports progress element var progressBar = $('progress');
// Set the Max attr for the first time progressBar.attr({ max: getMax() });
$(document).on('scroll', function(){ // On scroll only Value attr needs to be calculated progressBar.attr({ value: getValue() }); });
$(window).resize(function(){ // On resize, both Max/Value attr needs to be calculated progressBar.attr({ max: getMax(), value: getValue() }); });
} else {
var progressBar = $('.progress-bar'), max = getMax(), value, width;
var getWidth = function() { // Calculate width in percentage value = getValue(); width = (value/max) * 100; width = width + '%'; return width; }
var setWidth = function(){ progressBar.css({ width: getWidth() }); }
$(document).on('scroll', setWidth); $(window).on('resize', function(){ // Need to reset the Max attr max = getMax(); setWidth(); }); } });
Différents exemples sont traités dans la page de css tricks, vous pourrez les retrouver ici.
Voici le code pen pour mieux se rendre compte de l’effet.
Un deuxième exemple plus concis
Ce deuxième exemple fait appel à moins de code, il est tiré
On part d’une simple div que l’on place de préférence dans le header. Dans une première div, on pourra placer un logo, un titre, ou sa navigation. La barre de progression vient juste après
Un peu de css pour styliser le tout. Le header est placé en position fixed, de manière à toujours rester collé au haut de la page. Cela semble nécessaire pour que l’on puisse voir la barre de progression en action.
Vous pourrez retrouver cet exemple ici et un autre exemple n’utilisant que le css dans cette page
Voici le « pen » original de cet exemple
Un dernier exemple pour la route
Enfin, on peut trouver un autre exemple très bien fait aussi sur cette page. On peut récupérer le code en cliquant sur le bouton « back to demo » en haut de page.