Necesito construir un carrusel con 12 elementos que simulan una rueda 3d que gira infinitamente. Para ser claro, necesito crear precisamente este efecto:
https://codepen.io/SitePoint/pen/yXWXaw (encontrado aquí )
pero con estas características adicionales (especialmente en computadoras de escritorio y dispositivos móviles):
- las diapositivas deben seguir paso a paso el deslizamiento, es decir, las diapositivas deben moverse mientras se desliza (como lo hace Swiper).
- Con un deslizamiento rápido, debe desplazar muchas diapositivas con impulso (como lo hace Swiper con
freeScroll). - Luego, cuando la rueda deja de girar, se ajusta a la corredera delantera (como lo hace Swiper con
freeModeStickyycenteredSlides) que es la elegida por el usuario. - Necesito una devolución de llamada cada vez que un cambio de diapositiva (como evento
slideChanged) (como lo hace Swiper).
Por todas estas razones, pensé que Swiper 5.3.0 sería un buen punto de partida.
Intenté varias soluciones, la mejor es con esta configuración, pero loop: truees una solución horrible y causa problemas (verifique los comentarios):
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,
});
Definitivamente no es la forma correcta.
Creo que el camino correcto es el desarrollo de una costumbre Swiper effect(como el incorporado en cubeEffect, coverflowEffect, ...) que simula la rueda, sin necesidad de utilizar loop:trueque las cuestiones causas. Por ejemplo, aquí un chico crea su propio efecto personalizado que luego establece en el effectatributo de Swiper:
https://codepen.io/paralleluniv3rse/pen/yGQjMv
...
effect: "myCustomTransition",
...
¿Cómo desarrollar un efecto personalizado como la rueda 3d que necesito?
fuente

coverflowEffectcomo punto de partida y "piratear" sus parámetros, pero es solo una solución y no puedo obtener el efecto del primer codepen. Las diapositivas simplemente no se colocarán en una superficie circular.Respuestas:
Creo que esto es lo que quieres: https://codepen.io/mukyuu/pen/GRgPYqG .
Casi cumplió con sus condiciones, excepto que no está usando Swiper 5 y snap.
Luego, cuando la rueda deja de girar, se ajusta a un tobogán (como lo hace Swiper).ontouchfunción hay una devolución de llamada.HTML:
S (CSS):
JS:
Probado en los navegadores Android 9 y Windows 10.
fuente
slideChanged(como lo hace Swiper). Por todas estas razones, pensé que Swiper sería un buen punto de partida ...