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é
36 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
Bonjour est-il possible d’adapter les ancres douces, (dans l’idée de faire un slide) sur le système de pagination de spip ?
D’avance merci
Peux être cela à un rapport ?
https://stackoverflow.com/questions/15691569/javascript-issue-with-scrollto-in-chrome
Répondre à ce message
Le plugin ne fonctionne pas sous chrome ? Est ce normal ?
(derniere version du plugin et de spip)
Google Chrome pour mac est à jour Version 72.0.3626.121 (Build officiel) (64 bits)
EDIT. le plugin marche sous chrome. Ce sont les ancres douce du couteau suisse qui ne marche pas.
Répondre à ce message
Bonjour,
le plugin fonctionne bien en spip1.9.2e avec plugin jquery1.9.2.
Par contre l’intérêt que je voyais dans ce plugin, était de me sortir d’un problème de mise en page.
Ayant un header fixe et ma page qui commence dessous, les ancres normales redirige bien au renvoi mais par rapport au haut de la page qui est du coup caché par mon header fixe.
J’aurais donc voulu modifier ce plugin afin qu’il me permette de rediriger vers l’ancre +tant de pixel. Comment cela est-t’il possible ? J’ai essayé de modifié scrollto.js sans succès. Il me faudrait rajouter 82px pour que l’ancre renvoie bien à la première portion visible.
Merci d’avance
J’ai trouvé ceci comme info
http://flesler.blogspot.com/2007/10/jqueryscrollto.html
il semble que ce que je cherche soit possible par le paramètre offset mais je ne le trouve nulle part dans le plugin et n’y connaissan rien, je ne réussi pas à l’ajouter. Voici ce que j’ai testé
comment faire passer ce paramètre offset. Merci
Il semble que le plugin ancres douces utilise les fonctions de base des plugins scroolTo et localTo. Il ne me semble pas possible de lui faire passer des paramètres optionnels mis à part en les écrivant en dur dans les liens dans le squelettes.
Ais-je tort ?
Cette demande date, mais je n’ai pas trouvé d’autre moyen pour répondre à une problématique similaire que de surcharger le script jquery.localscroll.js en y ajoutant un paramètre « offset » ligne 46.
Bonjour Yohoo,
Voici ce qui est indiqué dans jquery.localscroll.js l. 38 :
Il faut peut-être ajouter la valeur d’offset dans ton js.perso :
Ben vouai, on peut y arriver comme ça :
https://github.com/flesler/jquery.scrollTo#changing-the-default-settings
En plus souple amha :
Répondre à ce message
Ça serait possible d’activer aussi les ancres douces pour le reste du squelette ?
Par exemple pour #top ?
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 : |