ออกนอกเส้นทางและสร้างภาพเคลื่อนไหวที่ปรับแต่งได้ทั้งหมดสำหรับโปรเจ็กต์
บางครั้งคุณอาจไม่ต้องการคำอธิบายประกอบการเปลี่ยนที่รวมอยู่ใน CSS หรือจะใช้ Web Animations หรือเฟรมเวิร์ก JavaScript ในกรณีเหล่านี้ โดยทั่วไปคุณสามารถกำหนดเส้นโค้ง (หรือสมการ) ของคุณเอง ซึ่งจะช่วยให้คุณควบคุมความรู้สึกของภาพเคลื่อนไหวของโปรเจ็กต์ได้อย่างมาก
สรุป
- การโจมตีแบบกำหนดเองช่วยให้คุณแสดงตัวตนในโปรเจ็กต์ได้มากขึ้น
- คุณสามารถสร้างเส้นโค้ง Bézier แบบลูกบาศก์ที่คล้ายกับเส้นโค้งของภาพเคลื่อนไหวเริ่มต้น (การค่อยๆ ช้าลง การค่อยๆ เร็วขึ้น ฯลฯ) แต่เน้นที่ตำแหน่งต่างๆ
- ใช้ JavaScript เมื่อต้องการควบคุมเวลาและลักษณะการทำงานของภาพเคลื่อนไหวได้มากขึ้น เช่น ภาพเคลื่อนไหวที่ยืดหยุ่นหรือตีกลับ
หากสร้างภาพเคลื่อนไหวด้วย CSS คุณจะกำหนดเส้นโค้งเบซิเยร์รูปลูกบาศก์เพื่อกำหนดเวลาได้ อันที่จริงแล้ว คีย์เวิร์ด ease
, ease-in
, ease-out
และ linear
จะแมปกับเส้นโค้ง Bézier ที่กําหนดไว้ล่วงหน้า ซึ่งมีรายละเอียดอยู่ในข้อกําหนดการเปลี่ยน CSS และข้อกําหนดภาพเคลื่อนไหวบนเว็บ
เส้นโค้ง Bézier เหล่านี้ใช้ค่า 4 ค่าหรือตัวเลข 2 คู่ โดยแต่ละคู่จะอธิบายพิกัด X และ Y ของจุดควบคุมของเส้นโค้ง Bézier เชิงลูกบาศก์ จุดเริ่มต้นของเส้นโค้งเบซิเยร์มีพิกัด (0, 0) และจุดสิ้นสุดมีพิกัด (1, 1) ซึ่งคุณจะกำหนดค่า X และ Y ของจุดควบคุมทั้งสองได้ ค่า X ของจุดควบคุม 2 จุดต้องอยู่ระหว่าง 0 ถึง 1 และค่า Y ของจุดควบคุมแต่ละจุดอาจเกินขีดจำกัด [0, 1] ได้ แม้ว่าข้อกำหนดจะไม่ได้ระบุจำนวนที่เกิน
การเปลี่ยนค่า X และ Y ของจุดควบคุมแต่ละจุดจะทำให้เส้นโค้งแตกต่างกันมาก และทำให้ภาพเคลื่อนไหวดูแตกต่างออกไปอย่างมาก เช่น หากจุดควบคุมแรกอยู่ในพื้นที่ขวาล่าง ภาพเคลื่อนไหวจะเริ่มต้นช้า ถ้าอยู่บริเวณด้านซ้ายบน ก็จะสามารถเริ่มต้นได้อย่างรวดเร็ว ในทางกลับกัน หากจุดควบคุมที่ 2 อยู่บริเวณด้านล่างขวาของตารางกริด จุดควบคุมจะเร็วในตอนท้าย แต่ถ้าจุดควบคุมที่ 2 อยู่ด้านซ้ายบน จุดนี้จะสิ้นสุดช้า
หากต้องการเปรียบเทียบ ให้ดูเส้นโค้ง 2 เส้น ได้แก่ เส้นโค้งค่อยๆ เข้า-ออกทั่วไป และเส้นโค้งที่กำหนดเอง
ดูภาพเคลื่อนไหวที่มีการค่อยๆ เปลี่ยนที่กำหนดเอง
CSS สำหรับเส้นโค้งที่กำหนดเองคือ
transition: transform 500ms cubic-bezier(0.465, 0.183, 0.153, 0.946);
ตัวเลขสองตัวแรกคือพิกัด X และ Y ของจุดควบคุมแรก และตัวเลขสองตัวคือพิกัด X และ Y ของจุดควบคุมตัวที่สอง
การสร้างเส้นโค้งที่กำหนดเองนั้นสนุกมากและช่วยให้คุณควบคุมลักษณะของภาพเคลื่อนไหวได้อย่างมาก ตัวอย่างเช่น เมื่อดูเส้นโค้งด้านบน คุณจะเห็นว่าเส้นโค้งคล้ายกับเส้นโค้งแบบค่อยๆ เพิ่มระดับแล้วค่อยๆ ลดลงแบบคลาสสิก แต่มีส่วนค่อยๆ เพิ่มระดับหรือ "ช่วงเริ่มต้น" ที่สั้นลง และช่วงค่อยๆ ลดลงที่ยาวขึ้นในตอนท้าย
ลองใช้เครื่องมือเส้นโค้งของภาพเคลื่อนไหวนี้และดูว่าเส้นโค้งส่งผลต่อลักษณะของภาพเคลื่อนไหวอย่างไร
ใช้เฟรมเวิร์ก JavaScript เพื่อการควบคุมที่มากขึ้น
บางครั้งคุณอาจต้องการการควบคุมมากกว่าที่เส้นโค้งเบซิเยร์รูปลูกบาศก์จะให้ได้ หากต้องการความรู้สึกของการเด้งกลับ คุณอาจพิจารณาใช้เฟรมเวิร์ก JavaScript เนื่องจากเอฟเฟกต์นี้ทำได้ยากด้วย CSS หรือ Web Animation
TweenMax
เฟรมเวิร์กหนึ่งที่มีประสิทธิภาพคือ TweenMax ของ GreenSock (หรือ TweenLite หากต้องการใช้โค้ดที่มีน้ำหนักเบามาก) เนื่องจากคุณจะได้รับการควบคุมมากมายจากเฟรมเวิร์กนี้ในไลบรารี JavaScript ขนาดเล็ก และเป็นโค้ดเบสที่ผ่านการทดสอบมาอย่างสมบูรณ์
ดูภาพเคลื่อนไหวการค่อยๆ เปลี่ยนแบบยืดหยุ่น
หากต้องการใช้ TweenMax ให้ใส่สคริปต์ต่อไปนี้ในหน้าเว็บของคุณ
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"></script>
หลังจากวางสคริปต์แล้ว คุณสามารถเรียกใช้ TweenMax กับองค์ประกอบและบอกพร็อพเพอร์ตี้ที่ต้องการ รวมถึงการเปลี่ยนรูปแบบที่คุณต้องการ คุณใช้ตัวเลือก easing ได้หลายแบบ โค้ดด้านล่างใช้ easing-out แบบยืดหยุ่น
var box = document.getElementById('my-box');
var animationDurationInSeconds = 1.5;
TweenMax.to(box, animationDurationInSeconds, {
x: '100%',
ease: 'Elastic.easeOut'
});
เอกสารประกอบของ TweenMax จะไฮไลต์ตัวเลือกทั้งหมดที่คุณมีที่นี่ ดังนั้นคุณควรอ่านเอกสารประกอบนี้