Saya perlu membuat korsel dengan 12 item yang mensimulasikan roda 3d berputar tanpa batas. Agar jelas, saya harus membuat efek ini:
https://codepen.io/SitePoint/pen/yXWXaw (ditemukan di sini )
tetapi dengan fitur-fitur tambahan ini (terutama pada desktop dan ponsel):
- slide harus mengikuti langkah-demi-langkah gesekan, yaitu slide harus bergerak sambil menggesek (seperti yang dilakukan Swiper).
- Dengan gesek cepat, ia akan menggulir banyak slide dengan momentum (seperti yang dilakukan Swiper
freeScroll
). - Kemudian ketika roda berhenti berputar itu terkunci ke slide depan (seperti yang dilakukan Swiper
freeModeSticky
dancenteredSlides
) bahwa itu yang dipilih dari pengguna. - Saya perlu panggilan balik setiap kali perubahan slide (seperti acara
slideChanged
) (seperti yang dilakukan Swiper).
Untuk semua alasan ini saya pikir Swiper 5.3.0 akan menjadi titik awal yang baik.
Saya mencoba berbagai solusi, yang lebih baik adalah dengan pengaturan ini, tetapi loop: true
solusi yang buruk dan menyebabkan masalah (periksa komentar):
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,
});
Jelas bukan jalan yang benar.
Saya pikir cara yang benar adalah untuk mengembangkan kebiasaan Swiper effect
(seperti built-in cubeEffect
, coverflowEffect
, ...) yang mensimulasikan roda, tanpa menggunakan loop:true
bahwa isu-isu penyebab. Sebagai contoh, di sini seorang pria menciptakan efek kustomnya sendiri yang kemudian ia atur dalam effect
atribut Swiper:
https://codepen.io/paralleluniv3rse/pen/yGQjMv
...
effect: "myCustomTransition",
...
Bagaimana cara mengembangkan efek khusus seperti roda 3d yang saya butuhkan?
sumber
coverflowEffect
sebagai titik awal dan "meretas" parameternya tetapi itu hanya solusi, dan saya tidak bisa mendapatkan efek codepen pertama. Slide tidak akan ditempatkan pada permukaan lingkaran.Jawaban:
Saya pikir inilah yang Anda inginkan: https://codepen.io/mukyuu/pen/GRgPYqG .
Hampir memenuhi persyaratan Anda kecuali untuk itu tidak menggunakan Swiper 5 dan jepret.
Kemudian ketika roda berhenti berputar itu terkunci ke slide (seperti yang dilakukan Swiper).ontouch
fungsinya ada panggilan balik.HTML:
S (CSS):
JS:
Diuji di browser Android 9 dan Windows 10.
sumber
slideChanged
(seperti yang dilakukan Swiper). Untuk semua alasan ini saya pikir Swiper akan menjadi titik awal yang baik ...