Panduan · 01

Transisi

Setiap komponen menerima satu transition: kurva timing atau pegas. Cara memilih, dan apa yang terjadi saat gerak diinterupsi.

Dua jenis transisi

Transisi berupa { duration, easing } atau { tempo: 'spring', spring }. Berikan ke prop transition komponen mana pun. Komponen yang menggerakkan beberapa hal sekaligus menerima prop kedua, seperti layoutTransition pada MotionList untuk item yang meluncur ke posisi baru.

transitions.js
// Timing: a duration and a curve.
{ duration: 300, easing: 'easeOut' }
{ duration: 600, easing: [0.22, 1, 0.36, 1] }

// Spring: physics that keeps its speed when interrupted.
{ tempo: 'spring', spring: { stiffness: 260, damping: 12 } }

// Spring with duration: calibrated to settle exactly then.
{ tempo: 'spring', spring: { stiffness: 260, damping: 12 }, duration: 500 }

Pegas dengan durasi

Pegas biasanya berjalan selama yang dibutuhkan fisikanya. Tambahkan duration dan pegas dikalibrasi untuk berhenti tepat saat itu, mempertahankan karakternya (seberapa memantul) sambil menyesuaikan timing Anda. Bandingkan kurva timing dan pegas pada tiga komponen yang sama di bawah.

Menyiapkan contoh…

Interupsi

Setiap komponen memulai gerak baru dari yang ada di layar. Pegas juga mempertahankan kecepatannya saat ini, jadi klik kedua memutar balik gerak dengan mulus. Kurva timing dimulai lagi dari posisi saat ini dengan kurva baru.

  • Angka: nilai baru melanjutkan dari glyph di layar.
  • Tinggi dan pertukaran: ukuran melanjutkan dari ukuran di layar.
  • Daftar: item yang berpindah ke posisi baru mempertahankan kecepatannya.

Transisi siap pakai

motionTokens mengumpulkan beberapa nuansa yang konsisten: empat pegas, empat kurva timing, dan empat durasi. Semuanya objek biasa, jadi spread salah satunya untuk mengubah satu field.

tokens.js
import { motionTokens } from '@kkwaenggwari/animated-chorus';

motionTokens.spring.quick; // snappy UI feedback
motionTokens.spring.basic; // the default feel
motionTokens.spring.gentle; // panels and height
motionTokens.spring.bouncy; // playful numbers
motionTokens.easing.expoOut; // { duration: 420, easing: 'expoOut' }
motionTokens.duration.fast; // 140

Nama easing

easing menerima linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut, atau array Bézier kubik seperti [0.22, 1, 0.36, 1].

Cari

Ketik untuk mencari dokumentasi.