วิธีการสร้างภาพเคลื่อนไหว SVG โดยใช้ CSS
ภาพเคลื่อนไหว SVG สามารถทำได้ผ่านองค์ประกอบพื้นฐานเช่น
และ
. แต่สำหรับผู้ที่คุ้นเคยกับภาพเคลื่อนไหว CSS ไม่ต้องกังวลเรายังสามารถใช้คุณสมบัติภาพเคลื่อนไหว CSS กับ SVG แบบเคลื่อนไหวได้เช่นกัน.
CSS Animation อาจเป็นอีกทางเลือกหนึ่งในการใช้ไลบรารี JavaScript เช่น SnapSVG ในโพสต์นี้เราจะเห็นสิ่งที่เราสามารถส่งด้วย CSS Animation ใน SVG.
1. การสร้างรูปร่าง
ก่อนอื่นเราจะต้องวาดรูปร่างและวัตถุที่เราต้องการให้เคลื่อนไหว คุณสามารถใช้แอพพลิเคชั่นเช่น ร่าง, Adobe Illustrator, หรือ Inkscape เพื่อสร้าง.
สำหรับตัวอย่างนี้ฉันวาดท้องฟ้าที่มีเมฆเป็นฉากหลังและเรือจรวดพุ่งขึ้นไปรวมกับเปลวไฟด้วย:
เมื่อวาดเสร็จแล้วเราต้องส่งออกแต่ละวัตถุที่เราสร้างขึ้นเป็น SVG.
ฉันจะใช้ Sketch เป็นตัวอย่างสำหรับขั้นตอนนี้ เลือกวัตถุที่คุณต้องการเปลี่ยนเป็นรูปแบบ SVG ที่ด้านล่างขวาของหน้าต่างให้คลิก ทำให้ส่งออกได้. เลือกรูปแบบ SVG จากนั้นคลิกส่งออก object-name คุณต้องทำสิ่งนี้ทีละวัตถุ.
2. ใส่ SVG ลงใน HTML
เมื่อคุณเปิดไฟล์ SVG ในโปรแกรมแก้ไขรหัสคุณจะพบว่ารหัส SVG นั้นค่อนข้างยุ่ง ดังนั้นก่อนที่เราจะปรับใช้ไฟล์ SVG ให้เป็นระเบียบเรียบร้อยและปรับให้เหมาะสมด้วยเครื่องมือบรรทัดคำสั่งนี้ชื่อ SVGO.
เปิด สถานีปลายทาง หรือ พร้อมรับคำสั่ง, และติดตั้ง SVGO ด้วยบรรทัดคำสั่งนี้:
[sudo] npm install -g svgo
ปรับคำสั่ง, svgo
, ในไฟล์ SVG โดยใช้ --น่ารัก
เพื่อสร้างรหัส SVG ที่อ่านได้:
svgo rocket.svg --pretty
หากคุณมี SVG หลายตัวในไดเรกทอรีคุณสามารถปรับให้เหมาะสมทั้งหมดพร้อมกันในคราวเดียว สมมติว่าชื่อไดเรกทอรี / ภาพ, จากนั้นในไดเร็กทอรีหลักให้ใช้คำสั่งนี้:
svgo -f images --pretty
มาดูความแตกต่างก่อนและหลังการใช้ SVGO.
คัดลอกรหัสภายในไฟล์ SVG และวางลงในไฟล์ HTML เราจะทำงานในพื้นที่ทำงานที่ 800px กว้าง 600px ดังนั้นอย่าลืมกำหนด ความกว้าง
ในองค์ประกอบ SVG.
SVG ถูกตั้งค่าในไฟล์ HTML เราจะต้องกำหนด ID สำหรับแต่ละวัตถุเพื่อให้เราสามารถเลือกพวกเขาใน CSS ในภายหลัง.
สำหรับบทช่วยสอนนี้เราต้องกำหนด ID สำหรับจรวดและเปลวไฟและเมฆบางส่วน เพื่อให้วัตถุจัดการกับสเตจแอนิเมชั่นในภายหลังเราจำเป็นต้องเพิ่ม รหัส - คุณยังสามารถใช้ ชั้น - ไปยังแต่ละวัตถุ ในขั้นตอนนี้รหัสจะมีลักษณะดังนี้:
3. สร้างภาพเคลื่อนไหวโดยใช้ CSS
ตอนนี้มาสนุกกันเถอะ แผนคือการเพิ่มจรวดขึ้นสู่อวกาศ จรวดถูกแบ่งออกเป็นสองกลุ่ม จรวดเองและเปลวไฟ.
ก่อนอื่นเราวางจรวดไว้ตรงกลางของพื้นที่ทำงานดังนี้
#rocket แปรรูป: แปล (260px, 200px);
สิ่งที่คุณเห็นคือ:
ตอนนี้เพื่อให้จรวดดูเหมือนว่ามันกำลังสูงขึ้นไปเราต้องสร้างภาพลวงตาของเมฆที่ตกลงมา CSS ที่เราใช้สำหรับสิ่งนี้คือ:
# cloud1 แอนิเมชัน: ตกเชิงเส้น 1s ไม่มีที่สิ้นสุด; @keyframes ตก จาก transform: translateY (-100px); เป็น transform: translateY (1000px)
เพื่อทำให้ดูสมจริงยิ่งขึ้นลองสร้างภาพเคลื่อนไหวเมฆสี่ก้อนแล้วสร้างมันขึ้นมา “ตก” ที่ความเร็วแตกต่างกัน นอกจากนี้เราจะวางตำแหน่งให้แตกต่างจากแกน X.
คลาวด์ที่สองจะมีรหัสดังนี้:
# cloud2 ภาพเคลื่อนไหว: fall-2 2s linear ไม่มีที่สิ้นสุด @keyframes fall-2 จาก transform: translate (200px, -100px); เป็น transform: translate (200px, 1000px)
โปรดทราบว่าเราได้ย้ายระบบคลาวด์ # 2 ไปทางขวาโดย 200px
กับ แปลความ
. ในขั้นตอนนี้ผลลัพธ์ควรมีลักษณะเช่นนี้.
ต่อไปมาทำให้จรวดมีชีวิตขึ้นมา เราจะกำหนดเฟรมภาพเคลื่อนไหวดังต่อไปนี้:
#rocket ภาพเคลื่อนไหว: ป๊อปอัพ 1 วินาทีช่วยให้ไม่ จำกัด @keyframes ป๊อปอัป 0% transform: แปล (260px, 200px); 50% transform: แปล (260px, 240px); 100% Transform: แปล (260px, 200px);
และเพิ่มแอนิเมชั่นในเปลวไฟจรวดเช่นกัน:
#flame ภาพเคลื่อนไหว: เขย่า. 2s เชิงเส้นไม่ จำกัด @keyframes สั่น 0% Transform: แปล (55px, 135px) หมุน (7deg); 20% transform: แปล (55px, 135px) หมุน (0deg); 40% transform: แปล (55px, 135px) หมุน (-7deg); 60% transform: แปล (55px, 135px) หมุน (0deg); 100% Transform: แปล (55px, 135px) หมุน (0deg);
ขวา! เมื่อรหัสของเราพร้อมแล้วภาพเคลื่อนไหวควรทำงานกับ SVG ของเรา.
ลองดูจรวดของเราระเบิดขึ้นสู่อวกาศ.
ความคิดสุดท้าย
แอนิเมชันไม่ใช่คุณสมบัติที่ง่ายที่สุดใน CSS ที่จะเข้าใจ แต่หวังว่าคุณจะพบบทช่วยสอนนี้เป็นจุดเริ่มต้นที่ดีในการสำรวจ CSS Animation บน SVG เพิ่มเติม คุณจะประหลาดใจเมื่อทราบว่าสามารถทำอะไรได้บ้างกับ CSS Animation.
หากคุณต้องการเริ่มต้นด้วยพื้นฐานเบื้องต้นคุณสามารถเริ่มต้นที่นี่ด้วยโพสต์นี้: A Look Into: ภาพเคลื่อนไหวกราฟิกเวกเตอร์ (SVG) ที่ปรับขนาดได้หรือติดตามส่วนที่เหลือของซีรี่ส์ SVG.
- ดูการสาธิต
- แหล่งดาวน์โหลด