Alors, pense à faire e.preventDefault() pour pas qu'il passe directement à l'ancre, et sinon chez moi ça fonctionne sur tous les navigateurs (safari et chrome) (et si tu veux qu'il mette quand même dans la barre de navigation le #..., tu peux manipuler l'historique https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur)
Bonjour,
J'ai une page qui a 2 ancres.
J'ai voulu faire en sorte que quand on clic sur les ancres, le défilement de l'écran se fasse progressivement, plutôt que : "d'un coup BAM on arrive sur l'ancre".
J'ai écris quelques lignes jQuery et ça fonctionne bien :
Mon problème :
Ça fonctionne sur Firefox, mais PAS sur Chrome et Opera.
Et incroyable : fonctionne sur IE.
J'ai mes navigateurs à jour.
Chrome => version 51 (stable)
Opera => version 38 (stable)
Sur stackOverflow je vois plein de réponses qui semblent fonctionner pour tout le monde, mais pas chez moi...
Dont celle-ci qui à eu 66 votes +1
j'ai essayé d'utiliser :
Si vous pouvez m'aider, Merci.
9 réponses
Coucou Alex,
Au début j'avais le prevent.Default(), mais quand j'ai testé sur Chrome et Opera, et que j'ai vu que ça ne bougeait PAS DU TOUT, j'ai enlevé le prevent.Default :
- ça n'a rien changé pour Firefox (fonctionne toujours)
- pour Chrome et Opera, ça leur a au moins permis d'aller jusqu'à l'ancre (y aller "d'un coup", à défaut d'y aller "progressivement").
Si je le remet :
- ne change rien pour FireFox
- Chrome et Opera ne bougent plus du tout, ils ne vont pas jusqu'à l'ancre, ils restent sur place.
C'est bizarre...
Tu saurais faire un JSFiddle ou quelque chose de ce genre ?
Je n'avais encore jamais utilisé.
C'est pratique !
J'ai copié/collé le code.
Maintenant je vois "Collaborate", et j'ai un lien pour "inviter un ami" :
https://jsfiddle.net/wgoubfua/#&togetherjs=NBjHKKmcFA
Je ne sais pas si c'est comme ça qu'on procède normalement...
Je ne sais pas trop si ça va être utile parce-que le CSS est un vrai BORDEL
(c'est un site de test, et je n'ai pas fait très attention...)
Et j'utilise COMPASS, c'est pour ça qu'on voit des "@include ...", des variables, du CSS imbriqué...
yo rien à voir mais tu peux optimiser ton code :
Ouais, merci.
https://codepen.io/alexjmvv/pen/pbyjyE
J'arrive pas à voir la différence :/
Edit : c'est ton css qui fait bug
Enlève les propriétés CSS height: 100%; overflow: hidden; de ton selecteur html ^^
Si tu pouvais remplacer le CSS (Compass) par le CSS généré/final, je pense que ça serait mieux pour nous ^^
(oui tout le monde n'a pas compass :p)
Ah bien vu, effectivement quand j'enlève le [overflow: hidden;]() du [html]() :
- le scrolling sur les ancre fonctionne sur Chrome et OPERA
- MAIS détruit l'aspect du site
- et le scrolling sur les ancres ne fonctionne PLUS sur Firefox
En fait j'essaie de faire une page de présentation, avec effet parallax, en pur CSS.
Et pour faire ça j'ai BESOIN du [overflow: hidden;]() sur [html]()
En tous cas c'était bien vu, merci. Mais maintenant que je sais que ce qui fait buguer Chrome et Opera c'est une propriété dont je ne peut pas me passer (je crois), j'ai l'impression que je ne vais pas m'en sortir là...
Je vais peut-être laisser comme ça alors... Zut.
Et pour ce qui est du CSS généré, bon sang je suis trop bête j'y ai même pas pensé quoi xD (je l'ai changé)