Lorsqu’on clique sur un lien qui mène vers une ancre dans la même page et que le navigateur « saute » brutalement jusqu’à cette ancre, le visiteur perd la notion de l’endroit où il se trouve et ne visualise pas la structure globale de la page. En termes d’ergonomie c’est assez mauvais, et on attend le navigateur qui trouvera la solution.
Dans l’immédiat, chacun peut améliorer cela sur son propre site SPIP. Le plugin Ancres douces fait une chose (et une seule) : il transforme toutes les ancres (<a href="#xxx">
) des pages en « ancres douces », où le navigateur fait défiler doucement la page jusqu’à l’ancre. Ainsi le lecteur sait en permanence où il se trouve dans la page, et peut plus facilement remonter, etc.
On peut voir ce plugin en action sur le site des blogs du Monde diplo (cliquer sur « XX commentaires » ou sur les appels de note, par exemple).
Ce plugin est une intégration à SPIP de deux scripts jQuery d’Ariel Flesler, avec lesquels il est possible de faire plein d’autres jolis scrolls (voir les démos) :
— localScroll
— scrollTo
Restreindre ancres_douces à certains blocs
Si vous utilisez d’autres scripts javascripts utilisant aussi les ancres (par exemple un slider jquery), il est possible que des interférences se produisent avec ancres_douces.
Pour éviter ces interférences, il est nécessaire d’indiquer sur quel bloc ou quels types de blocs on veut restreindre le fonctionnement de ancres_douces.
Pour cela, on doit définir dans mes_options.php la constante « CONTEXTE_ANCRES_DOUCES ».
Exemple :
- Pour restreindre au bloc d’id contenu (convient sur un grand nombre de squelettes spip ) :
define ('CONTEXTE_ANCRES_DOUCES','#contenu');
- pour restreindre à tous les éléments de classe « ancres_douces »
define ('CONTEXTE_ANCRES_DOUCES','.ancres_douces');
Bugs connus :
- fonctionne mal avec Opera. (corrigé en 1.2)
Discussions par date d’activité
6 discussions
Testé en Spip 4.2.0,
RAS, tout semble fonctionner // Compatible 4.2
Testé avec PHP 8.0.
Répondre à ce message
Bonjour,
Maintenant qu’on peut faire ça avec une ligne de CSS, est-ce qu’il serait pertinent de modifier ce plugin pour ne plus avoir de javascript ?
Un peu de doc : https://blog.mayank.co/better-scrolling-through-modern-css
Répondre à ce message
Dans le cas où il y a des conflits javascript, je trouve plus simple de prendre le problème à l’envers : garder les ancres douces partout, et désactiver sur certains blocs ponctuellement.
Dans ce cas, je rajoute la classe « no-ancres-douces » là où ça pose poroblème, et dans mes_options.php :
Oups, j’ai parlé trop vite, ça ne fonctionne pas ainsi. Et la bonne valeur c’est CONTEXTE_ANCRES_DOUCES.
C’est corrigé dans la doc...
Bonsoir,
Je déterre cette option qui ne fonctionne pas chez moi :
alors que :
fonctionne !
Il n’y a rien a modifier dans Ancres Douces ?
Merci.
François.
Bonjour,
De mon côté je n’arrive pas à faire fonctionner le define avec le sélecteur :not() comme tu l’indiques : tu as modifié autre chose ?
SPIP et Ancres Douces à jours.
Merci,
françois
Non je n’étais pas arrivé à faire fonctionner ainsi, et depuis je n’ai pas trop regardé.
Nb : maintenant c’est de base dans les navigateurs récents :
Merci tcharlss, mais c’est confidentiel quand même :
https://caniuse.com/#feat=css-scroll-behavior
Je vais regarder du côté de jQuery.localScroll.
Et bien il y a la variable
filter
qui permet de filtrer les sélecteurs que l’on veut exclure :mais il faut applique le sélecteur directement sur les href à exclure et pas uniquement sur le conteneur !
françois
D’après canisuse, il n’y a plus que sur safari que
scroll-behavior: smooth;
n’est pas définiRépondre à ce message
Bonjour,
j’utilise le plugin avec un « menu » a gauche " et les ancres dans un div sur la droite avec overflow auto
si je clique et que le déplacement doit être vers le bas cela décale
si je clique et que le déplacement doit être vers le haut ... cela marche nikel
avez vous une idée du pb ?
merci
Répondre à ce message
Salut,
pour un plugin, je cherche à désactiver le hash dans l’url.
J’arrive bien à changer le événement déclencheur par défaut (defaults.event) mais pas l’apparition du hash.
L’option est en dur dans le pipeline, ça veut dire qu’on ne peut pas la surcharger ?
Ou alors, comment désactiver le hash uniquement sur certains liens ?
Merci
Répondre à ce message
Juste une remarque : 2 versions de ce plugins s’installent en parallèle au lieu d’être remplacées :
1.5.1 SVN [115158]
1.3 SVN [43216]
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |