คู่มือ · 01
ทรานซิชัน
ทุกคอมโพเนนต์รับ transition หนึ่งตัว: เส้นโค้ง timing หรือสปริง วิธีเลือก และสิ่งที่เกิดขึ้นเมื่อการเคลื่อนไหวถูกขัดจังหวะ
ทรานซิชันสองแบบ
ทรานซิชันคือ { duration, easing } หรือ { tempo: 'spring', spring } ส่งให้ prop transition ของคอมโพเนนต์ใดก็ได้ คอมโพเนนต์ที่เคลื่อนหลายสิ่งพร้อมกันจะรับ prop ตัวที่สอง เช่น layoutTransition บน MotionList สำหรับรายการที่เลื่อนไปตำแหน่งใหม่
// 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 }สปริงที่มีระยะเวลา
ปกติสปริงจะทำงานนานเท่าที่ฟิสิกส์ของมันต้องการ เพิ่ม duration แล้วสปริงจะถูกปรับให้หยุดตรงเวลานั้นพอดี โดยยังคงลักษณะ (ความเด้ง) ไว้และเข้ากับ timing ของคุณ เปรียบเทียบเส้นโค้ง timing กับสปริงบนสามคอมโพเนนต์เดียวกันด้านล่าง
กำลังเตรียมตัวอย่าง…
การขัดจังหวะ
ทุกคอมโพเนนต์เริ่มการเคลื่อนไหวใหม่จากสิ่งที่อยู่บนหน้าจอ สปริงยังรักษาความเร็วปัจจุบันไว้ การคลิกครั้งที่สองจึงกลับทิศการเคลื่อนไหวได้อย่างลื่นไหล เส้นโค้ง timing จะเริ่มใหม่จากตำแหน่งปัจจุบันด้วยเส้นโค้งใหม่
- ตัวเลข: ค่าใหม่ทำต่อจากกลีฟบนหน้าจอ
- ความสูงและการสลับ: ขนาดทำต่อจากขนาดบนหน้าจอ
- รายการ: รายการที่กำลังย้ายไปตำแหน่งใหม่รักษาความเร็วไว้
ทรานซิชันสำเร็จรูป
motionTokens รวบรวมความรู้สึกที่สอดคล้องกันไว้: สปริงสี่แบบ เส้นโค้ง timing สี่แบบ และระยะเวลาสี่ค่า เป็นออบเจกต์ธรรมดา จึง spread ตัวหนึ่งเพื่อเปลี่ยนฟิลด์เดียวได้
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ชื่อ easing
easing รับ linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut หรืออาร์เรย์ Bézier กำลังสามอย่าง [0.22, 1, 0.36, 1]