กวดวิชาภาพเคลื่อนไหว CSS: คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น
เผยแพร่แล้ว: 2022-02-07นี่คือคู่มือไวยากรณ์ฉบับสมบูรณ์และบทช่วยสอนภาพเคลื่อนไหว CSS เชิงโต้ตอบสำหรับผู้เริ่มต้น ใช้เป็นข้อมูลอ้างอิงเพื่อเรียนรู้ส่วนต่างๆ ของข้อมูลจำเพาะภาพเคลื่อนไหว CSS
ประสิทธิภาพของเบราว์เซอร์มาไกลในช่วง 10 ปีที่ผ่านมา การเพิ่มแอนิเมชั่นแบบอินเทอร์แอกทีฟให้กับหน้าเว็บนั้นเป็นเรื่องที่ท้าทายกว่ามาก เนื่องจากอาจเกิดปัญหาในการแสดงผลและประสิทธิภาพ แต่ในปัจจุบันนี้ แอนิเมชั่น CSS สามารถใช้ได้อย่างอิสระมากกว่า และโดยทั่วไปแล้ว ไวยากรณ์จะเรียนรู้ได้ง่ายกว่ามากเมื่อเทียบกับฟีเจอร์ CSS เช่น grid หรือ flexbox
มีคุณลักษณะต่างๆ ที่เป็นส่วนหนึ่งของข้อกำหนดภาพเคลื่อนไหว W3C CSS บางอย่างใช้งานง่ายกว่าคนอื่นๆ บทช่วยสอนเกี่ยวกับแอนิเมชั่น CSS คีย์เฟรมนี้จะอธิบายไวยากรณ์ทั้งหมด ซึ่งรวมถึงคุณสมบัติต่างๆ แต่ละรายการด้วย ฉันจะรวมการสาธิตเชิงโต้ตอบเพื่อช่วยให้คุณเข้าใจสิ่งที่เป็นไปได้ด้วยภาพเคลื่อนไหว CSS
ไวยากรณ์ @keyframes
แอนิเมชั่น CSS ทุกรายการมีสองส่วนด้วยกัน: คุณสมบัติ animation-*
หนึ่งรายการขึ้นไปพร้อมกับชุดคีย์เฟรมแอนิเมชั่นที่กำหนดโดยใช้ @keyframes
at-rule มาดูรายละเอียดกันว่าจะสร้างชุดกฎ @keyframes
ได้อย่างไร
ไวยากรณ์มีลักษณะดังนี้:
@keyframes moveObject 0% transform: translateX(0); 50% transform: translateX(300px); 100% transform: translateX(300px) scale(1.5);
ดังที่แสดงไว้ที่นี่ @keyframes
at-rule ประกอบด้วยสามส่วนพื้นฐาน:
- กฎ
@keyframes
ตามด้วยชื่อแอนิเมชั่นที่กำหนดเอง - ชุดวงเล็บปีกกาที่ครอบคีย์เฟรมทั้งหมด
- คีย์เฟรมอย่างน้อย 1 รายการ โดยแต่ละรายการมีเปอร์เซ็นต์ตามด้วยชุดกฎที่ล้อมรอบด้วยวงเล็บปีกกา
ในตัวอย่างแรกของบทช่วยสอนเรื่องภาพเคลื่อนไหว CSS นี้ ฉันได้กำหนดแอนิเมชั่นด้วยชื่อ moveObject
ชื่อนี้สามารถเป็นชื่อใดก็ได้ที่ฉันต้องการ คำนึงถึงขนาดตัวพิมพ์ และต้องปฏิบัติตามกฎตัวระบุที่กำหนดเองใน CSS ชื่อที่กำหนดเองนี้ต้องตรงกับชื่อที่ใช้ในคุณสมบัติ animation-name
(จะกล่าวถึงในภายหลัง)
ในตัวอย่างของฉัน คุณจะสังเกตเห็นว่าฉันใช้เปอร์เซ็นต์เพื่อกำหนดแต่ละคีย์เฟรมในแอนิเมชั่นของฉัน หากแอนิเมชั่นของฉันมีคีย์เฟรมที่เท่ากับ 0%
และ 100%
ฉันสามารถใช้คีย์เวิร์ด from
และ to
แทนได้:
@keyframes moveObject from transform: translateX(0); 50% transform: translateX(300px); to transform: translateX(300px) scale(1.5);
CodePen แบบโต้ตอบต่อไปนี้ใช้ไวยากรณ์ด้านบนในตัวอย่างสด:
ในการสาธิต ฉันได้รวมปุ่มที่รีเซ็ตภาพเคลื่อนไหว ฉันจะอธิบายในภายหลังว่าทำไมจึงจำเป็น แต่สำหรับตอนนี้ แค่รู้ว่าแอนิเมชั่นนี้มีคีย์เฟรมสามคีย์ที่แสดงขั้นตอนในลำดับของแอนิเมชันนี้: จุดเริ่มต้น ขั้นตอน 50% และจุดสิ้นสุด (เช่น 0% 50% และ 100%) แต่ละรายการใช้สิ่งที่เรียกว่าตัวเลือกคีย์เฟรมร่วมกับวงเล็บปีกกาเพื่อกำหนดคุณสมบัติในขั้นตอนนั้น
สิ่งที่ควรทราบเกี่ยวกับไวยากรณ์ @keyframes
:
- คุณจัดชุดกฎคีย์เฟรมในลำดับใดก็ได้ตามต้องการ และเบราว์เซอร์จะยังเรียกใช้ชุดกฎดังกล่าวในลำดับที่กำหนดโดยเปอร์เซ็นต์
- คุณสามารถละเว้นคีย์เฟรม 0% และ 100% และเบราว์เซอร์จะกำหนดสิ่งเหล่านี้โดยอัตโนมัติตามสไตล์ที่มีอยู่ในองค์ประกอบที่กำลังเคลื่อนไหว
- หากมีคีย์เฟรมที่ซ้ำกันซึ่งมีชุดกฎต่างกัน (เช่น คีย์เฟรมสองตัวสำหรับ 20% โดยมีค่าการแปลงที่ต่างกัน) เบราว์เซอร์จะใช้คีย์เฟรมสุดท้าย
- คุณสามารถกำหนดหลายคีย์เฟรมในตัวเลือกคีย์เฟรมเดียวด้วยเครื่องหมายจุลภาค:
10%, 30% ...
- คีย์เวิร์ด
!important
จะลบค่าคุณสมบัติใดๆ ดังนั้นจึงไม่ควรใช้กับคุณสมบัติภายในชุดกฎคีย์เฟรม
ตอนนี้ คุณมีความเข้าใจที่ดีเกี่ยวกับไวยากรณ์ @keyframes
ในบทช่วยสอนเกี่ยวกับแอนิเมชั่น CSS นี้แล้ว มาดูคุณสมบัติของแอนิเมชั่นต่างๆ ที่กำหนดไว้ในองค์ประกอบที่กำลังเคลื่อนไหวกัน
คุณสมบัติแอนิเมชั่นที่เราจะกล่าวถึง:
คุณสมบัติชื่อแอนิเมชั่น
ดังที่กล่าวไว้ ทุกแอนิเมชั่น CSS ที่คุณสร้างต้องมีชื่อที่ปรากฏในไวยากรณ์ @keyframes
ชื่อนี้ต้องเป็นชื่อเดียวกับที่กำหนดโดยใช้คุณสมบัติ animation-name
การใช้ CSS จากการสาธิตครั้งก่อน ไวยากรณ์มีลักษณะดังนี้:
.box animation-name: moveObject;
อีกครั้ง ชื่อที่กำหนดเองที่ฉันกำหนดจะต้องมีชื่อสำหรับ @keyframes
at-rule ด้วย ไม่เช่นนั้นชื่อนี้จะไม่ทำอะไรเลย คุณสามารถคิดได้เหมือนกับการเรียกใช้ฟังก์ชันใน JavaScript ฟังก์ชันเองจะเป็นส่วน @keyframes moveObject
ของโค้ด ในขณะที่การเรียกใช้ฟังก์ชันคือ animation-name: moveObject
สิ่งที่ควรทราบเกี่ยวกับ animation-name
:
- ค่าเริ่มต้นสำหรับ
animation-name
คือnone
ซึ่งหมายความว่าไม่มีคีย์เฟรมที่ทำงานอยู่ สามารถใช้เป็น 'สลับ' เพื่อปิดใช้งานแอนิเมชั่นได้ - ชื่อที่คุณเลือกเป็นแบบพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และสามารถประกอบด้วยตัวอักษร ตัวเลข ขีดล่าง และขีดกลาง
- อักขระตัวแรกในชื่อต้องเป็นตัวอักษรหรือยัติภังค์ แต่มีเครื่องหมายยัติภังค์เดียวเท่านั้น
- ชื่อไม่สามารถเป็นคำสงวน เช่น
unset
initial
หรือinherit
คุณสมบัติระยะเวลาแอนิเมชั่น
คุณสมบัติ animation-duration
ไม่แปลกใจเลยที่จะกำหนดระยะเวลาที่แอนิเมชันใช้ในการเรียกใช้หนึ่งครั้งตั้งแต่ต้นจนจบ ค่านี้สามารถระบุได้ในหน่วยวินาทีหรือมิลลิวินาที ดังที่แสดงด้านล่าง:
.box animation-duration: 2s;
ข้างต้นจะเทียบเท่ากับต่อไปนี้:
.box animation-duration: 2000ms;
คุณสามารถดูคุณสมบัติ animation-duration
ในการดำเนินการในการสาธิต CodePen ต่อไปนี้ ในการสาธิตนี้ คุณสามารถเลือกได้ว่าต้องการให้แอนิเมชั่นอยู่ได้นานแค่ไหน ลองป้อนค่าต่างๆ ในหน่วยวินาทีหรือมิลลิวินาที จากนั้นใช้ปุ่ม "ทำให้กล่องเคลื่อนไหว" เพื่อเรียกใช้ภาพเคลื่อนไหว
หากคุณใช้ตัวเลขเล็กๆ ร่วมกับ ms
สำหรับหน่วย คุณอาจไม่สังเกตเห็นการเคลื่อนไหวใดๆ ลองตั้งค่าตัวเลขที่สูงขึ้นหากคุณใช้มิลลิวินาที
หมายเหตุบางประการเกี่ยวกับการใช้ animation-duration
:
- ค่าลบไม่ถูกต้อง
- ต้องรวมหน่วยด้วย แม้ว่าระยะเวลาจะถูกตั้งเป็น
0s
(ค่าเริ่มต้น) - คุณสามารถใช้ค่าเศษส่วน (เช่น
0.8s
)
คุณสมบัติของแอนิเมชั่น-ไทม์มิ่ง-ฟังก์ชัน
animation-timing-function
ซึ่งไม่ชัดเจนในความหมายเหมือนกับคุณสมบัติสองอย่างก่อนหน้านี้ ใช้เพื่อกำหนดลักษณะที่ภาพเคลื่อนไหว CSS ดำเนินไป นั่นอาจไม่ใช่คำอธิบายที่ชัดเจนที่สุด แต่ไวยากรณ์อาจช่วยชี้แจงได้
การประกาศมีลักษณะดังนี้:
.box animation-timing-function: linear;
คุณสมบัตินี้ยอมรับค่าคีย์เวิร์ดต่อไปนี้:
-
ease
(ค่าเริ่มต้น) -
ease-in
-
ease-out
-
ease-in-out
-
linear
-
step-start
-
step-end
ค่าส่วนใหญ่เข้าใจได้ง่ายจากชื่อ แต่คุณสามารถดูความแตกต่างได้โดยใช้การสาธิตเชิงโต้ตอบต่อไปนี้:
ใช้อินพุตที่เลือกเพื่อเลือกค่าคีย์เวิร์ดหนึ่งในเจ็ดค่า โปรดทราบว่าค่าความ ease-*
จะ 'ความง่าย' ของแอนิเมชันในรูปแบบต่างๆ ค่าเชิงเส้นจะคงที่ตลอดทาง
คุณสมบัติ animation-timing-function
ยังยอมรับฟังก์ชันต่อไปนี้:
-
cubic-bezier()
– ยอมรับค่าตัวเลขสี่ค่าที่เป็นอาร์กิวเมนต์ คั่นด้วยเครื่องหมายจุลภาค -
steps()
- ยอมรับเป็นอาร์กิวเมนต์สองค่า ตัวเลขและ "คำข้าม" คั่นด้วยเครื่องหมายจุลภาค
ค่าของคำหลัก step-start
และ step-end
เทียบเท่ากับค่า step steps(1, jump-start)
และ steps(1, jump-end)
ตามลำดับ
สำหรับ cubic-bezier()
การสาธิตเชิงโต้ตอบต่อไปนี้อาจช่วยให้คุณเข้าใจฟังก์ชันดีขึ้นเล็กน้อย:
สังเกตว่าการสาธิตให้คุณตั้งค่าอาร์กิวเมนต์สี่ข้อในฟังก์ชัน cubic-bezier()
อาร์กิวเมนต์สองข้อสามารถเป็นค่าลบได้ และสองอาร์กิวเมนต์ถูกจำกัดให้เป็นค่าทศนิยมระหว่าง 0 ถึง 1 สำหรับคำอธิบายที่เหมาะสมเกี่ยวกับวิธีการทำงานของไทม์มิ่งประเภทนี้ คุณสามารถดูบทความนี้หรือเครื่องมือแบบโต้ตอบนี้
ในทางกลับกัน ฟังก์ชัน steps()
ยอมรับสองอาร์กิวเมนต์:
- จำนวนเต็มที่แสดง "หยุด" เท่ากับรอบเดียวของภาพเคลื่อนไหว
- คีย์เวิร์ดเสริมที่เรียกว่า “jumpterm” ซึ่งกำหนดว่าแอนิเมชั่น “ค้าง” ในช่วงเวลาที่กำหนดหรือไม่
อีกครั้ง การสาธิตเชิงโต้ตอบควรช่วยให้คุณเข้าใจว่า Jumpterm เหล่านี้ทำงานอย่างไร:
ลองเลือกจำนวนเต็มร่วมกับ Jumpterm (หรือลองใช้โดยไม่ใช้ Jumpterm) เพื่อดูว่าคีย์เวิร์ดต่างๆ แตกต่างกันอย่างไรโดยมีค่าจำนวนเต็มต่างกัน เห็นได้ชัดว่าอนุญาตให้ใช้จำนวนเต็มลบ แต่ฉันไม่เห็นความแตกต่างระหว่าง 0 และค่าลบใดๆ
แอนิเมชั่น-วนซ้ำ-นับคุณสมบัติ
ในบางกรณี คุณจะพอใจถ้าแอนิเมชั่นทำงานครั้งเดียว แต่บางครั้งคุณต้องการให้แอนิเมชั่นทำงานหลายครั้ง คุณสมบัติ animation-iteration-count
ให้คุณทำได้โดยยอมรับจำนวนบวกที่แสดงจำนวนครั้งที่คุณต้องการให้แอนิเมชั่นทำงาน:

.box animation-iteration-count: 3;
ค่าเริ่มต้นสำหรับ animation-iteration-count
คือ 1
แต่คุณยังสามารถใช้คำหลัก infinite
(อธิบายตนเองได้) หรือใช้ค่าเศษส่วน ค่าเศษส่วนจะเรียกใช้ส่วนแอนิเมชั่นในการรันเศษส่วน:
.box animation-iteration-count: 3.5;
โค้ดด้านบนทำงานผ่านแอนิเมชั่นสามครั้งครึ่ง นั่นคือ การวนซ้ำทั้งหมดสามครั้ง ตามด้วย การวนซ้ำครั้งสุดท้ายหนึ่งครั้งที่หยุดไปครึ่งทางพอดี
คุณสมบัตินี้มีประโยชน์มากที่สุดเมื่อใช้ร่วมกับคุณสมบัติ animation-direction
(จะกล่าวถึงต่อไป) เนื่องจากแอนิเมชั่นที่ทำงานตั้งแต่เริ่มต้นเท่านั้นจะไม่มีประโยชน์อย่างยิ่งหากเรียกใช้มากกว่าหนึ่งครั้ง
คุณสามารถลองใช้การสาธิตด้านล่างซึ่งช่วยให้คุณเลือกค่าเศษส่วนสำหรับการนับซ้ำได้ เพื่อให้คุณเห็นผล:
คุณสมบัติทิศทางภาพเคลื่อนไหว
ตามที่กล่าวไว้ข้างต้นในบทช่วยสอนเกี่ยวกับภาพเคลื่อนไหว CSS นี้ คุณสมบัติ animation-direction
ทำงานได้ดีร่วมกับ animation-iteration-count
คุณสมบัติ animation-direction
ช่วยให้คุณกำหนดทิศทางที่คุณต้องการให้ภาพเคลื่อนไหวเล่น ไวยากรณ์มีลักษณะดังนี้:
.box animation-direction: alternate;
คุณสามารถตั้งค่าเป็นหนึ่งในสี่คำหลัก:
-
normal
– แอนิเมชั่นเล่นไปข้างหน้าในการวนซ้ำครั้งแรก (ค่าเริ่มต้น) -
reverse
– แอนิเมชั่นเล่นย้อนกลับในการวนซ้ำครั้งแรก -
alternate
– แอนิเมชั่นเล่นไปข้างหน้าในการวนซ้ำครั้งแรกจากนั้นสลับในการวนซ้ำครั้งต่อ ๆ ไป -
alternate-reverse
– เหมือนกับalternate
แต่เล่นย้อนกลับในการวนซ้ำครั้งแรก
คุณสามารถลองใช้ค่าต่างๆ กับจำนวนการวนซ้ำที่แตกต่างกันได้โดยใช้การสาธิตเชิงโต้ตอบด้านล่าง:
คุณสมบัติแอนิเมชั่นเล่นสถานะ
คุณสมบัติ animation-play-state
ไม่ได้มีประโยชน์อย่างยิ่งในสภาพแวดล้อม CSS แบบคงที่ แต่อาจมีประโยชน์เมื่อเขียนแอนิเมชั่นที่มีการโต้ตอบผ่าน JavaScript หรือแม้แต่ CSS
คุณสมบัตินี้ยอมรับสองค่า: running
หรือ paused
:
.box animation-direction: paused;
โดยค่าเริ่มต้น ภาพเคลื่อนไหวที่ระบุจะอยู่ในสถานะ "กำลังทำงาน" แต่คุณสามารถใช้ JavaScript เพื่อสลับค่าของคุณสมบัติได้ คุณยังสามารถใช้คุณลักษณะ CSS แบบโต้ตอบได้ เช่น :hover
หรือ :focus
เพื่อเปลี่ยนภาพเคลื่อนไหวเป็นสถานะ "หยุดชั่วคราว" ซึ่งจะทำให้ภาพเคลื่อนไหวหยุดนิ่งไม่ว่าจะอยู่ที่ใดในการวนซ้ำปัจจุบัน
การสาธิตเชิงโต้ตอบด้านล่างมีแอนิเมชั่นที่ทำงานอย่างไม่จำกัดโดยมีปุ่มสองปุ่มเพื่อ "หยุดชั่วคราว" และ "เล่นต่อ" ภาพเคลื่อนไหว
แอนิเมชั่น-ดีเลย์คุณสมบัติ
แอนิเมชั่นบางตัวได้รับการออกแบบมาให้เริ่มสร้างแอนิเมชั่นทันที ในขณะที่บางแอนิเมชั่นอาจได้รับประโยชน์จากความล่าช้าเล็กน้อยก่อนการวนซ้ำครั้งแรก คุณสมบัติ animation-delay
ช่วยให้คุณทำสิ่งนี้ได้สำเร็จ
.box animation-delay: 4s;
เช่นเดียวกับค่าตามเวลาอื่นๆ คุณสามารถตั้งค่าการ animation-delay
เป็นค่าโดยใช้วินาทีหรือมิลลิวินาที คุณยังสามารถใช้ค่าเศษส่วนได้
สิ่งสำคัญคือต้องสังเกตว่าการหน่วงเวลาเกิดขึ้นเฉพาะในการวนซ้ำครั้งแรก ไม่ใช่การวนซ้ำแต่ละครั้ง คุณสามารถลองใช้การสาธิตเชิงโต้ตอบด้านล่าง:
การสาธิตให้ตัวเลือกแก่คุณในการเปลี่ยนค่าการวนซ้ำและการหน่วงเวลา คุณจึงเห็นได้ว่าการหน่วงเวลาไม่ส่งผลต่อการวนซ้ำในครั้งต่อๆ ไป – เฉพาะครั้งแรกเท่านั้น
วิธีที่น่าสนใจในการใช้คุณสมบัตินี้คือมีค่าติดลบ ตัวอย่างเช่น ใช้การสาธิตด้านบน ลองตั้งค่าการ animation-delay
เป็น -0.5s
คุณจะสังเกตเห็นว่าการหน่วงเวลาเชิงลบทำงานเหมือนกับการดำเนินไปข้างหน้าในไทม์แมชชีน – แอนิเมชั่นเริ่มต้นจากทางที่ผ่านมากกว่าจุดเริ่มต้น
คุณสมบัติโหมดเติมแอนิเมชั่น
คุณสมบัติ longhand สุดท้ายที่ฉันจะกล่าวถึงในบทช่วยสอนเกี่ยวกับอนิเมชั่น CSS นี้คือคุณสมบัติที่ฉันใช้ในการสาธิตครั้งก่อน คุณจะสังเกตเห็นว่าเมื่อภาพเคลื่อนไหวหยุดการวนซ้ำครั้งสุดท้าย กล่องจะยังคงอยู่ที่เดิม ทำได้โดยใช้ animation-fill-mode
.box animation-fill-mode: forwards;
คุณสมบัตินี้กำหนดวิธีที่แอนิเมชั่นนำสไตล์ไปใช้กับองค์ประกอบเป้าหมายก่อนและหลังการดำเนินการ มันเข้าใจยากนิดหน่อยในเชิงแนวคิด ดังนั้นฉันจะครอบคลุมความหมายของแต่ละค่า จากนั้นคุณสามารถเปรียบเทียบค่าต่างๆ ได้โดยใช้การสาธิตเชิงโต้ตอบ
คุณสมบัตินี้ยอมรับค่าคีย์เวิร์ดสี่ค่าต่อไปนี้:
-
none
– ค่าเริ่มต้น ไม่มีสไตล์ที่ใช้ก่อนหรือหลังการดำเนินการ -
forwards
– เก็บสไตล์ทั้งหมดที่ใช้ในคีย์เฟรมสุดท้ายของแอนิเมชั่น -
backwards
– มากหรือน้อยย้อนกลับของค่าก่อนหน้า จะคงรูปแบบที่ใช้กับภาพเคลื่อนไหวไว้ทันทีที่เริ่มดำเนินการ แต่ก่อนที่ภาพเคลื่อนไหวจะเริ่มขึ้น -
both
– รักษาสไตล์สำหรับทั้งforwards
และbackwards
การสาธิตขั้นสุดท้ายในบทช่วยสอนเกี่ยวกับภาพเคลื่อนไหว CSS นี้จะทำให้สิ่งต่างๆ ชัดเจนขึ้นเล็กน้อย แต่อาจต้องใช้เวลามากในการเล่นก่อนที่คุณจะได้รับสิ่งที่ทำจริง ๆ และวิธีที่มันทำสำเร็จ
เพื่อความสะดวก ฉันได้เพิ่มการสาธิตทั้งหมดลงใน CodePen Collection ชุดเดียว
คุณจะสังเกตเห็นว่าการสาธิตช่วยให้คุณสามารถปรับโหมดการเติม การหน่วงเวลา ทิศทาง และจำนวนครั้งของการวนซ้ำ เนื่องจากสิ่งเหล่านี้อาจส่งผลต่อลักษณะที่ปรากฏ ฉันยังเพิ่มสีพื้นหลังที่แตกต่างกันให้กับกล่องภาพเคลื่อนไหวในคีย์เฟรมแรก ซึ่งช่วยให้ค่าโหมดเติมมีความชัดเจนขึ้นอีกเล็กน้อย หากคุณยังไม่เข้าใจว่า animation-fill-mode
ทำงานอย่างไร คุณสามารถดูบทความเก่าที่ฉันเขียนซึ่งกล่าวถึง animation-fill-mode
ในเชิงลึก
คุณสมบัติชวเลขแอนิเมชั่น
ฉันได้กล่าวถึงคุณสมบัติที่แตกต่างกันแปดประการในบทช่วยสอนแอนิเมชั่น CSS สำหรับผู้เริ่มต้นและฉันขอแนะนำให้คุณใช้มือยาว วิธีนี้จะช่วยให้คุณเห็นชุดค่าที่ชัดเจนได้ง่ายขึ้น
เมื่อคุณมีความเข้าใจที่ดีเกี่ยวกับคุณสมบัติแต่ละอย่างแล้ว คุณจะมีตัวเลือกในการใช้คุณสมบัติชวเลขของ animation
ซึ่งช่วยให้คุณกำหนดคุณสมบัติ longhand ทั้งหมดในการประกาศครั้งเดียว
.box animation: moveObject 2s ease-in-out 3 reverse running 1.3s forwards;
บอกตามตรง นั่นเป็นข้อมูลจำนวนมากในบรรทัดเดียว ฉันขอแนะนำให้ใช้ชวเลขหากการประกาศไม่ได้รวมคุณสมบัติทั้งหมด แต่อาจมีเพียงสามหรือสี่คุณสมบัติเท่านั้น
หากคุณใช้ชวเลข คุณสามารถใส่ค่าในลำดับใดก็ได้ที่คุณต้องการ แต่ให้สังเกตกฎต่อไปนี้:
- ค่าแรกที่กำหนดเวลาคือ
animation-duration
; ค่าของเวลาต่อมาคือanimation-delay
- หากมีความขัดแย้งระหว่างคำหลักและ
animation-name
ค่าของคำหลักจะมีความสำคัญเหนือกว่าหากปรากฏขึ้นก่อน - ค่าที่ละเว้นจะถอยกลับไปสู่สถานะเริ่มต้น เช่นเดียวกับคุณสมบัติชวเลข CSS
การนำแอนิเมชั่นหลายๆ อันไปใช้กับองค์ประกอบเดียว
คุณลักษณะสุดท้ายประการหนึ่งที่คุณควรทราบคือ คุณมีตัวเลือกในการใช้ภาพเคลื่อนไหวหลายรายการกับวัตถุชิ้นเดียวโดยคั่นภาพเคลื่อนไหวด้วยเครื่องหมายจุลภาค
นี่คือตัวอย่างการใช้ชวเลข:
.box animation: moveObject 2s ease-in-out, fadeBox 3s linear;
ในที่นี้ ฉันได้กำหนดแอนิเมชั่นที่แตกต่างกันสองแบบที่จะจับคู่กับคีย์เฟรมสองชุดที่ต่างกัน แต่จะนำไปใช้กับออบเจกต์เดียวกัน รหัสเดียวกันนั้นสามารถเขียนด้วยมือยาวเป็น:
.box animation-name: moveObject, fadeBox; animation-duation: 2s, 3s; animation-timing-function: ease-in-out, linear;
สังเกตว่าแต่ละคุณสมบัติมีค่าสองค่าโดยคั่นด้วยเครื่องหมายจุลภาคอย่างไร ในกรณีนี้ การจดชวเลขจะง่ายต่อการอ่านและบำรุงรักษาเกือบแน่นอน
สรุปการสอนเกี่ยวกับอนิเมชั่น CSS นี้
หากคุณเป็นผู้เริ่มต้นใช้ CSS และบทช่วยสอนเกี่ยวกับแอนิเมชั่น CSS นี้เป็นการทดสอบครั้งแรกของคุณในการทดลองย้ายสิ่งของบนหน้าเว็บ ฉันหวังว่าบทเรียนจะครอบคลุมเพียงพอ คุณอาจรวมตัวแปร CSS เข้ากับแอนิเมชั่นเพื่อให้มีประสิทธิภาพมากขึ้น
คำเตือนครั้งสุดท้าย: ใช้แอนิเมชั่นในปริมาณที่พอเหมาะ และจำไว้ว่าผู้ใช้เว็บบางคนอาจได้รับผลกระทบจากสีที่กะพริบและวัตถุที่เคลื่อนไหวเร็วอื่นๆ
ด้วยการฝึกฝน ไวยากรณ์และแนวคิดสำหรับการสร้างแอนิเมชั่น CSS จะติดอยู่กับคุณ และคุณจะได้รับประโยชน์อย่างแน่นอนจากการใช้โค้ดในการสาธิตต่างๆ