0Pricing
React Academy · บทเรียน

แอนิเมชันคีย์เฟรม CSS ด้วย React

เพิ่มและลบแอนิเมชัน @keyframes แบบไดนามิกตามสถานะและเหตุการณ์ของคอมโพเนนต์

แอนิเมชันคีย์เฟรม CSS ด้วย React เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

การกำหนด @keyframes

กฎ @keyframes อธิบายแอนิเมชันหลายขั้นด้วยการระบุค่าคุณสมบัติตามจุดต่าง ๆ บนเส้นเวลา โดยใช้ from/to หรือเปอร์เซ็นต์ เช่น 0%, 50%, 100%

คีย์เฟรมแตกต่างจากการเปลี่ยนผ่านตรงที่สามารถอธิบายการเคลื่อนไหวหลายขั้นที่ซับซ้อนได้ และทำงานได้ด้วยตัวเองโดยไม่ต้องเปลี่ยนสถานะในทุกขั้น

รูปแบบย่อของแอนิเมชัน

คุณใช้ชุดคีย์เฟรมด้วยคุณสมบัติ animation: animation: slideIn 400ms ease forwards ซึ่งรวมชื่อ ระยะเวลา ฟังก์ชันกำหนดจังหวะ และโหมดการคงค่าไว้ด้วยกัน

โหมดการคงค่า forwards จะตรึงองค์ประกอบไว้ที่ค่าของคีย์เฟรมสุดท้ายหลังแอนิเมชันสิ้นสุด เพื่อป้องกันไม่ให้กระโดดกลับไปยังจุดเริ่มต้น

ใช้คลาสแอนิเมชันผ่านสถานะ

ใน React โดยทั่วไปคุณจะเพิ่มคลาสที่มีการประกาศ animation เมื่อสถานะกลายเป็นจริง ตัวอย่างเช่น การเพิ่ม is-entering จะเริ่มคีย์เฟรมทันทีที่องค์ประกอบถูกเมานต์หรือเมื่อแฟล็กเปลี่ยนค่า

วิธีนี้ทำให้ตรรกะของแอนิเมชันอยู่ใน CSS ขณะที่ React เพียงตัดสินใจว่าจะเพิ่มคลาสเมื่อใด

โหมดการคงค่าของแอนิเมชัน

animation-fill-mode ควบคุมว่าสไตล์ใดจะมีผลก่อนและหลังแอนิเมชันทำงาน forwards จะคงค่าคีย์เฟรมสุดท้ายไว้ backwards จะใช้ค่าคีย์เฟรมแรกระหว่างช่วงหน่วง และ both จะทำทั้งสองอย่าง

หากไม่มี forwards องค์ประกอบที่กำลังเคลื่อนไปสู่สถานะค่อย ๆ ปรากฏจะกระโดดกลับไปมองไม่เห็นเมื่อแอนิเมชันเสร็จสิ้น

ทิศทางแอนิเมชันแบบสลับไปกลับ

animation-direction: alternate จะเล่นแอนิเมชันไปข้างหน้าแล้วเล่นย้อนกลับในแต่ละรอบ เมื่อนำไปรวมกับ animation-iteration-count: infinite จะสร้างการเคลื่อนไหวไปกลับอย่างลื่นไหล คล้ายเอฟเฟกต์เต้นเป็นจังหวะหรือหายใจ

วิธีนี้เหมาะสำหรับตัวบ่งชี้การโหลดหรือการเคลื่อนไหวเล็กน้อยที่ช่วยดึงความสนใจ

การหยุดชั่วคราวด้วยสถานะการเล่นแอนิเมชัน

animation-play-state สามารถเป็น running หรือ paused ได้ คุณสามารถควบคุมค่านี้จากสถานะของ React ได้ เช่น หยุดแอนิเมชันข้อความเลื่อนเมื่อวางเมาส์เหนือ โดยสลับคลาส

เนื่องจากแอนิเมชันหยุดชั่วคราวแทนที่จะรีเซ็ต แอนิเมชันจึงทำงานต่อจากจุดที่หยุดไว้ได้อย่างแม่นยำ

เรียกทำงานซ้ำด้วยการเปลี่ยนพร็อพคีย์

แอนิเมชันคีย์เฟรมจะเล่นเพียงครั้งเดียวเมื่อใช้คลาสกับองค์ประกอบเป็นครั้งแรก การเพิ่มคลาสเดิมอีกครั้งจะไม่เริ่มแอนิเมชันใหม่ วิธีที่สะอาดที่สุดใน React คือเปลี่ยน key ขององค์ประกอบ เพื่อให้ React ติดตั้งโหนดใหม่และเล่นแอนิเมชันตั้งแต่ต้นอีกครั้ง

ตัวอย่างเช่น การใช้ key={count} กับการแจ้งเตือนแบบโทสต์จะติดตั้งใหม่ทุกครั้งที่ค่าตัวนับเพิ่มขึ้น

เคารพการตั้งค่าลดการเคลื่อนไหว

ผู้ใช้บางรายเปิดใช้การลดการเคลื่อนไหวใน OS เพื่อความสบายหรือการเข้าถึง ให้ครอบแอนิเมชันที่ไม่จำเป็นไว้ใน @media (prefers-reduced-motion: reduce) แล้วปิดใช้งานหรือลดระยะเวลาแอนิเมชันเหล่านั้นเมื่อใช้การตั้งค่านี้

การเคารพการตั้งค่านี้ทำให้อินเทอร์เฟซของคุณครอบคลุมผู้ใช้มากขึ้น และช่วยหลีกเลี่ยงการทำให้เกิดความไม่สบาย

เรียกทำงานเมื่อเลื่อนด้วย IntersectionObserver

หากต้องการทำให้แอนิเมชันทำงานเมื่อองค์ประกอบเข้าสู่พื้นที่แสดงผล ให้ใช้ IntersectionObserver ใน useEffect เมื่อรายการที่สังเกตเห็นปรากฏ คุณจะตั้งค่าสถานะ ซึ่งจะเพิ่มคลาสแอนิเมชัน

วิธีนี้ทำให้เกิดเอฟเฟกต์แสดงองค์ประกอบเมื่อเลื่อนหน้า โดยไม่ต้องมีตัวรับฟังการเลื่อนจำนวนมากทำงานในทุกเฟรม

จัดจังหวะแอนิเมชันด้วยการหน่วงเวลา

animation-delay ทำให้เวลาเริ่มต้นของแอนิเมชันคีย์เฟรมแต่ละรายการเหลื่อมกัน การกำหนดระยะหน่วงที่เพิ่มขึ้นให้รายการต่าง ๆ จะทำให้รายการเหล่านั้นแสดงแอนิเมชันตามลำดับอย่างมีจังหวะ

คุณสามารถคำนวณระยะหน่วงของแต่ละรายการใน React ได้ด้วย style={{ animationDelay: i * 80 + 'ms' }}

คีย์เฟรมกับการเปลี่ยนผ่าน

ใช้การเปลี่ยนผ่านสำหรับการเปลี่ยนแปลงแบบสองสถานะง่าย ๆ ที่เกิดจากการโต้ตอบ และใช้คีย์เฟรมเมื่อต้องการการเคลื่อนไหวหลายขั้น การวนซ้ำ หรือแอนิเมชันที่ทำงานแยกจากการสลับสถานะ

ทั้งสองอย่างเป็น CSS ล้วน ๆ ดังนั้น React จึงตัดสินใจเพียงว่าจะผูกคลาสเมื่อใด ส่วนเบราว์เซอร์จัดการเฟรมเอง

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับการทำงานของคีย์เฟรม

ทบทวน

คุณได้เรียนรู้การกำหนด @keyframes การใช้ด้วยรูปแบบย่อ animation การควบคุมโหมดการเติมและทิศทาง การหยุดชั่วคราวและเรียกแอนิเมชันให้ทำงานซ้ำ รวมถึงการแสดงองค์ประกอบเมื่อเลื่อนหน้าด้วย IntersectionObserver

คุณยังได้เห็นวิธีเคารพ prefers-reduced-motion เพื่อให้การเคลื่อนไหวเข้าถึงได้มากขึ้น

คำถามที่พบบ่อย

บทเรียน “แอนิเมชันคีย์เฟรม CSS ด้วย React” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แอนิเมชันคีย์เฟรม CSS ด้วย React” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แอนิเมชันคีย์เฟรม CSS ด้วย React”

เพิ่มและลบแอนิเมชัน @keyframes แบบไดนามิกตามสถานะและเหตุการณ์ของคอมโพเนนต์ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “แอนิเมชันคีย์เฟรม CSS ด้วย React” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเปลี่ยนผ่าน CSS เมื่อสถานะ React เปลี่ยนแปลง
  2. แอนิเมชันคีย์เฟรม CSS ด้วย React
  3. ใช้ useLayoutEffect เพื่อวัดขนาดก่อนเริ่มแอนิเมชัน
  4. แอนิเมชันเข้าและออกโดยไม่ใช้ไลบรารี
← กลับไปที่ React Academy