Javascript - Lisse parallaxe défilement avec la molette de la souris
J'ai une page où je suis en appliquant un effet de parallaxe. Ceci est accompli en utilisant translate3d. Maintenant, tout cela fonctionne bien, je me demande comment je peux remplacer la valeur par défaut "étapes" lorsque le défilement avec la molette de la souris?
Si je défilement avec les barres de défilement, tout va bien. Mais avec la molette de la souris, c'est tout agité.
Je fais cela dans un assez simple:
var prefix = Modernizr.prefixed('transform');
$window.on('scroll', function(){
var scroll_top = $window.scrollTop();
if(scroll_top < forside_infographics_offset){
$_('#slider').css(prefix , "translate3d(0,"+(scroll_top/3)+"px,0)");
}
});
Maintenant, j'ai vu ce site, où le scrolling est super lisse, également avec la molette de la souris avec des étapes sur elle. J'ai essayé de regarder le code, et qu'il utilise requestAnimationFrame
paraît-il, mais comment il accomplir cette excact effet de défilement, je ne suis pas sûr.
Des idées?
Vous devez vous connecter pour publier un commentaire.
Après avoir fait beaucoup de recherches, j'ai trouvé une jolie solution facile 🙂
http://bassta.bg/demos/smooth-page-scroll/
Assez intéressant, je n'avais pas à modifier mon code. Il remplace le défilement par défaut de comportement, tout en laissant l'événement ouvert pour moi de l'utiliser comme je le ferais normalement.
De défilement à l'aide de la molette de la souris nécessite un traitement spécial. La raison d'être de chaque molette de la souris défilement ne pas faire défiler le contenu d'une certaine quantité de pixels. Chaque défiler les causes de votre page à sauter et puis chaque saut, les résultats dans le "jumpy" agités d'animation comme l'image de fond est en train d'essayer de se positionner lors de ces sauts.
À l'aide d'une bibliothèque de résoudre le problème la plupart du temps, mais il est également intéressant de comprendre quels sont les problèmes qu'il essaie de résoudre sous le capot.
Juste pour la référence à cause de lui, les événements de souris la roulette de la souris et DOMMouseScroll
Ce plugin pour Chrome fournit les fonctionnalités nécessaires pour cela. Quelqu'un a créé un gist avec un version compacte de. C'est à partir d'une très ancienne version, mais je pense que c'est bien parce que, comme je l'ai vérifié, la dernière version du plugin ajoute trop de choses.
Un couple de choses avec qui gist si:
Donc je me suis créer un version qui traite de ces points. Il suffit d'ajouter le script et appel
SmoothScroll.init()
pour commencer.Edit: Pendant le test, j'ai compris ce qui a un important bug. Alors que ma version se comporte (à mon avis) énormément mieux que le code d'origine, il n'est malheureusement pas en compte pour le défilement par d'autres moyens (barre de défilement/moyen-cliquez et faites glisser). Le défilement à l'une de ces méthodes, puis le défilement avec la molette de la souris provoque pour revenir à l'endroit où défilement emplacement vous étiez à la dernière fois que vous avez fait défiler la molette de la souris. Je vais mettre à jour quand je développe une solution à cette question.
Kenny référencé solution est une approche fine, mais c'est une fonctionnalité m'a rendu fou. Si vous faites défiler la roue rapidement, il ne serait pas faire défiler plus rapidement.
J'ai amélioré de telle sorte que vous faites défiler une distance donnée par clic indépendamment de la molette de la souris vitesse de rotation.
La raison, sa réponse n'a pas raison en est que si vous faites défiler la roue une seconde fois avant la première animation est terminée, la nouvelle faites défiler jusqu'à la hauteur est seulement le courant de défilement de la hauteur en plus même si ça défile par la roue de clic. (Si si faites défiler le temps est .5 secondes et vous faites défiler une deuxième fois après .25 secondes, puis faire défiler 1,5 fois la roue de défilement de la distance au lieu de 2 fois la distance)
Il est tard dans la nuit, j'espère qu'un sens.
Regradless voici mon code:
Les bibliothèques requises
De défilement code
Grande question.
La bibliothèque que j'utilise est celui-ci:
https://github.com/cferdinandi/smooth-scroll
Il suffit d'inclure le smoothscroll.js fichier, et le travail est accompli.
La molette de la souris sera désormais en douceur facile en bas de la page, plutôt que de sauter vers le bas en blocs de pixels.
Il améliore vraiment le look de la parallaxe des pages web.
Btw, pour la parallaxe des images, j'utilise cette bibliothèque:
https://github.com/pederan/Parallax-ImageScroll
Il est vraiment facile d'ajouter à une page web, n'oubliez pas d'inclure et d'initialiser cette bibliothèque au bas de votre page web, après vos images et HTML.
(Je ne savais pas que cela ferait une différence, mais il ne fait absolument !)