J'ai besoin de construire un carrousel avec 12 éléments qui simulent une roue 3D tournant à l'infini. Pour être clair, je dois créer précisément cet effet:
https://codepen.io/SitePoint/pen/yXWXaw (trouvé ici )
mais avec ces fonctionnalités supplémentaires (sur ordinateur et mobile en particulier):
- les diapositives doivent suivre étape par étape le balayage, c'est-à-dire que les diapositives doivent se déplacer pendant le balayage (comme le fait Swiper).
- Avec un balayage rapide, il devrait faire défiler de nombreuses diapositives avec élan (comme Swiper le fait avec
freeScroll
). - Ensuite, lorsque la roue arrête de tourner, elle s'enclenche sur la glissière avant (comme Swiper le fait avec
freeModeSticky
etcenteredSlides
) que c'est celle choisie par l'utilisateur. - J'ai besoin d'un rappel chaque fois qu'un changement de diapositive (comme un événement
slideChanged
) (comme le fait Swiper).
Pour toutes ces raisons, je pensais que Swiper 5.3.0 serait un bon point de départ.
J'ai essayé différentes solutions de contournement, la meilleure est avec cette configuration, mais loop: true
c'est une solution de contournement horrible et provoque des problèmes (consultez les commentaires):
var swiper = new Swiper(el_class, {
slidesPerView: 1.5,
spaceBetween: 25,
centeredSlides: true,
grabCursor: true,
speed: 550,
loop: true, // <== repeat infinitely the 12 items. with fast scroll at the end of a cycle it waits a while before render the next cycle. Awful
loopAdditionalSlides: 10,
// Free mode
freeMode: true, // <== free scrolling. Good
freeModeMomentumRatio: 1,
freeModeMomentumVelocityRatio: 1.5,
freeModeMomentumBounceRatio: 1,
freeModeMinimumVelocity: 0.02,
freeModeSticky: true, // <== snap to the slides. Good
// Touch Resistance
resistanceRatio: 0.85,
// Prevent blurry texts
roundLengths: true,
});
Certainement pas la bonne façon.
Je pense que la bonne façon de développer une coutume Chipeur effect
(comme intégré cubeEffect
, coverflowEffect
...) qui simule la roue, sans utiliser loop:true
que les questions de causes. Par exemple, ici, un gars crée son propre effet personnalisé qu'il définit ensuite dans l' effect
attribut de Swiper:
https://codepen.io/paralleluniv3rse/pen/yGQjMv
...
effect: "myCustomTransition",
...
Comment développer un effet personnalisé comme la roue 3D dont j'ai besoin?
la source
coverflowEffect
comme point de départ et de "pirater" ses paramètres, mais ce n'est qu'une solution de contournement, et je ne peux pas obtenir l'effet du premier codepen. Les diapositives ne seront tout simplement pas placées sur une surface circulaire.Réponses:
Je pense que c'est ce que vous voulez: https://codepen.io/mukyuu/pen/GRgPYqG .
Il a presque rempli vos conditions, sauf qu'il n'utilise pas Swiper 5 et Snap.
Puis, lorsque la roue cesse de tourner, elle s'enclenche sur une glissière (comme le fait Swiper).ontouch
fonction il y a un rappel.HTML:
S (CSS):
JS:
Testé dans les navigateurs Android 9 et Windows 10.
la source
slideChanged
(comme le fait Swiper). Pour toutes ces raisons, je pensais que Swiper serait un bon point de départ ...