คอมโพเนนต์ทั้งหมด

MotionSwap

เนื้อหาที่ครอสเฟดขณะที่ขนาดเปลี่ยนตาม

เว็บReact Nativeเนื้อหาและขนาด

ลองดู

กำลังเตรียมตัวอย่าง…

การใช้งานที่สั้นที่สุด

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

สิ่งที่มันจัดการให้คุณ

  • องค์ประกอบเปลี่ยนขนาดจากขนาดบนหน้าจอเป็นขนาดตามธรรมชาติของเนื้อหาใหม่ ปุ่มจึงไม่เคยกระโดด
  • เนื้อหาเก่าจางไปที่เดิมขณะที่เนื้อหาใหม่ค่อย ๆ ปรากฏ ทั้งคู่ไม่จัดเรียงใหม่ระหว่างการสลับ
  • การเปลี่ยนกลับกลางการสลับจะทำต่อจากสิ่งที่อยู่บนหน้าจอ แทนที่จะซ้อนสำเนา
  • children ที่เป็นข้อความธรรมดาเป็น value ของตัวเอง สำหรับอย่างอื่นให้ส่ง value

ใช้สำหรับ

  • บันทึก แล้วกำลังบันทึก… แล้วบันทึกแล้ว
  • โครงร่างที่กลายเป็นการ์ดโปรไฟล์
  • ปุ่มเล่นที่กลายเป็นปุ่มหยุดชั่วคราว

Props

Propชนิดค่าเริ่มต้นคำอธิบาย
valueunknownตัวตนของเนื้อหา ค่าใหม่จะทำให้สลับ children ที่เป็นข้อความธรรมดาเป็นตัวตนของตัวเอง
childrenReactNodeเนื้อหา
aselement'span'องค์ประกอบที่จะเรนเดอร์
inlinebooleanas === 'span'true ปรับขนาดตามเนื้อหา (ป้าย ไอคอน) false เต็มความกว้างของพาเรนต์และเคลื่อนไหวความสูง
align'start' | 'center' | 'end''center'ตำแหน่งของเนื้อหาขณะขนาดเปลี่ยน
effect'fade' | 'up' | 'down' | 'scale''fade'วิธีที่เนื้อหาเข้าและออก: up ลอยขึ้น down ตกลง scale ขยายขึ้น
transitionTransitionspringเส้นโค้ง timing { duration, easing } หรือสปริง { tempo: 'spring', spring } สปริงรักษาโมเมนตัมไว้เมื่อถูกขัดจังหวะ
onMotionComplete(value) => voidทำงานเมื่อการเคลื่อนไหวหยุดนิ่ง

props อื่นจะส่งต่อไปยังองค์ประกอบที่เรนเดอร์ className, style และตัวจัดการเหตุการณ์จึงทำงานตามปกติ

เว็บและ React Native

inline (ค่าเริ่มต้นเมื่อเรนเดอร์เป็น span) เคลื่อนไหวทั้งความกว้างและความสูง inline={false} เต็มความกว้างของพาเรนต์และเคลื่อนไหวความสูง

บน React Native การสลับแบบ inline จะวัดเนื้อหาใหม่ในบรรทัดเดียว ใช้ inline={false} สำหรับเนื้อหาที่ตัดบรรทัด

ใช้ในตัวอย่างเหล่านี้

ค้นหา

พิมพ์เพื่อค้นหาเอกสาร