โพสต์นี้จะอธิบายวิธีสร้างภาพเคลื่อนไหวยอดนิยมบางรายการที่พบใน CodePen ภาพเคลื่อนไหวเหล่านี้ทั้งหมดใช้เทคนิคที่มีประสิทธิภาพซึ่งได้อธิบายไว้ในบทความอื่นๆ ในส่วนนี้
ดูทำไมภาพเคลื่อนไหวบางรายการจึงทำงานช้าเพื่อทําความเข้าใจทฤษฎีเบื้องหลังคําแนะนําเหล่านี้ และดูคู่มือภาพเคลื่อนไหวเพื่อดูเคล็ดลับที่นำไปใช้ได้จริง
ภาพเคลื่อนไหวการโหลดของวิซาร์ด
ดูภาพเคลื่อนไหวการโหลดวิซาร์ดใน CodePen
ภาพเคลื่อนไหวการโหลดนี้สร้างขึ้นด้วย CSS ทั้งหมด รูปภาพและภาพเคลื่อนไหวทั้งหมดสร้างขึ้นใน CSS และ HTML ไม่มีรูปภาพหรือ JavaScript หากต้องการทำความเข้าใจวิธีสร้างและประสิทธิภาพของโฆษณา คุณสามารถใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
ตรวจสอบภาพเคลื่อนไหวด้วยเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
ขณะที่ภาพเคลื่อนไหวกำลังทำงาน ให้เปิดแท็บ "ประสิทธิภาพ" ใน Chrome DevTools และบันทึกภาพเคลื่อนไหว 2-3 วินาที คุณควรเห็นในสรุปว่าเบราว์เซอร์ไม่ได้ดำเนินการเลย์เอาต์หรือการวาดภาพเมื่อแสดงภาพเคลื่อนไหวนี้
หากต้องการดูว่าภาพเคลื่อนไหวนี้สร้างขึ้นมาได้อย่างไรโดยไม่ก่อให้เกิดเลย์เอาต์และการระบายสี ให้ตรวจสอบองค์ประกอบที่เคลื่อนไหวได้ในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome คุณสามารถใช้แผงภาพเคลื่อนไหวเพื่อค้นหาองค์ประกอบภาพเคลื่อนไหวต่างๆ โดยคลิกที่องค์ประกอบใดก็ได้เพื่อไฮไลต์ใน DOM
เช่น เลือกรูปสามเหลี่ยม แล้วดูว่ากล่องขององค์ประกอบเปลี่ยนรูปแบบอย่างไรระหว่างที่ลอยขึ้นไปในอากาศ ขณะหมุน และกลับไปยังตำแหน่งเริ่มต้น
เมื่อยังคงเลือกองค์ประกอบอยู่ ให้ดูที่แผงสไตล์ คุณจะเห็น CSS ที่วาดรูปร่างของสามเหลี่ยม และภาพเคลื่อนไหวที่ใช้
วิธีการทำงาน
สามเหลี่ยมสร้างขึ้นโดยใช้องค์ประกอบจำลอง ::after
เพื่อเพิ่มเนื้อหาที่สร้างขึ้น ใช้เส้นขอบเพื่อสร้างรูปร่าง
.triangle {
position: absolute;
bottom: -62px;
left: -10px;
width: 110px;
height: 110px;
border-radius: 50%;
}
.triangle::after {
content: "";
position: absolute;
top: 0;
right: -10px;
width: 0;
height: 0;
border-style: solid;
border-width: 0 28px 48px 28px;
border-color: transparent transparent #89beb3 transparent;
}
เพิ่มภาพเคลื่อนไหวด้วยบรรทัด CSS ต่อไปนี้
animation: path_triangle 10s ease-in-out infinite;
หากยังอยู่ในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome คุณจะค้นหาคีย์เฟรมได้โดยเลื่อน "แผงรูปแบบ" ลง
คุณจะเห็นการสร้างภาพเคลื่อนไหวโดยใช้ transform
เพื่อเปลี่ยนตำแหน่งขององค์ประกอบและบิด
พร็อพเพอร์ตี้ transform
เป็นหนึ่งในพร็อพเพอร์ตี้ที่อธิบายไว้ในคู่มือภาพเคลื่อนไหว ซึ่งจะไม่ทำให้เบราว์เซอร์ดำเนินการเลย์เอาต์หรือการลงสี (ซึ่งเป็นสาเหตุหลักที่ทำให้ภาพเคลื่อนไหวช้า)
@keyframes path_triangle {
0% {
transform: translateY(0);
}
10% {
transform: translateY(-172px) translatex(10px) rotate(-10deg);
}
55% {
transform: translateY(-172px) translatex(10px) rotate(-365deg);
}
58% {
transform: translateY(-172px) translatex(10px) rotate(-365deg);
}
63% {
transform: rotate(-360deg);
}
}
ชิ้นส่วนต่างๆ ที่เคลื่อนไหวของภาพเคลื่อนไหวนี้ใช้เทคนิคที่คล้ายกัน ผลลัพธ์ที่ได้คือภาพเคลื่อนไหวที่ซับซ้อนซึ่งทำงานได้อย่างราบรื่น
วงกลมกะพริบ
บางครั้งภาพเคลื่อนไหวประเภทนี้ก็ใช้เพื่อดึงดูดความสนใจไปยังบางสิ่งในหน้าเว็บ หากต้องการทำความเข้าใจภาพเคลื่อนไหว คุณสามารถใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Firefox
ตรวจสอบภาพเคลื่อนไหวด้วยเครื่องมือสำหรับนักพัฒนาเว็บของ Firefox
ขณะที่ภาพเคลื่อนไหวกำลังทำงาน ให้เปิดแท็บ "ประสิทธิภาพ" ใน Firefox DevTools และบันทึกภาพเคลื่อนไหว 2-3 วินาที หยุดการบันทึก แล้วดูในการแสดงโฆษณาสื่อกลางตามลำดับขั้นว่าไม่มีรายการคำนวณสไตล์ใหม่ ตอนนี้คุณทราบแล้วว่าภาพเคลื่อนไหวนี้จะไม่ทําให้ระบบคํานวณสไตล์ใหม่ และด้วยเหตุนี้จึงไม่ทําให้เลย์เอาต์และการดำเนินการเพนต์
ตรวจสอบวงกลมใน Firefox DevTools เพื่อดูว่าภาพเคลื่อนไหวนี้ทำงานอย่างไร
<div>
ที่มีคลาส pulsating-circle
จะระบุตำแหน่งของวงกลม แต่จะไม่วาดวงกลม
.pulsating-circle {
position: absolute;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
width: 30px;
height: 30px;
}
วงกลมและภาพเคลื่อนไหวที่มองเห็นได้สร้างขึ้นโดยใช้องค์ประกอบจำลอง ::before
และ ::after
องค์ประกอบ ::before
สร้างวงแหวนทึบแสงที่ขยายออกนอกวงกลมสีขาว โดยใช้ภาพเคลื่อนไหวชื่อ pulse-ring
ซึ่งเคลื่อนไหวtransform: scale
และ opacity
.pulsating-circle::before {
content: '';
position: relative;
display: block;
width: 300%;
height: 300%;
box-sizing: border-box;
margin-left: -100%;
margin-top: -100%;
border-radius: 45px;
background-color: #01a4e9;
animation: pulse-ring 1.25s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
}
@keyframes pulse-ring {
0% {
transform: scale(0.33);
}
80%, 100% {
opacity: 0;
}
}
วิธีดูว่าคุณสมบัติใดที่กำลังเป็นภาพเคลื่อนไหวอีกวิธีคือการเลือกแผงภาพเคลื่อนไหวในเครื่องมือสำหรับนักพัฒนาเว็บใน Firefox จากนั้นคุณจะเห็นภาพของภาพเคลื่อนไหวที่ใช้ และคุณสมบัติที่กำลังเป็นภาพเคลื่อนไหว
วงกลมสีขาวสร้างขึ้นและเคลื่อนไหวโดยใช้องค์ประกอบจำลอง ::after
ภาพเคลื่อนไหว pulse-dot
ใช้ transform: scale
เพื่อเพิ่มและย่อจุดระหว่างการแสดงภาพเคลื่อนไหว
.pulsating-circle::after {
content: '';
position: absolute;
left: 0;
top: 0;
display: block;
width: 100%;
height: 100%;
background-color: white;
border-radius: 15px;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
animation: pulse-dot 1.25s cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite;
}
@keyframes pulse-dot {
0% {
transform: scale(0.8);
}
50% {
transform: scale(1);
}
100% {
transform: scale(0.8);
}
}
ภาพเคลื่อนไหวเช่นนี้อาจใช้ในตำแหน่งต่างๆ ในแอปพลิเคชันของคุณ สิ่งสำคัญคือรายละเอียดเล็กๆ น้อยๆ เหล่านี้ต้องไม่ส่งผลต่อประสิทธิภาพโดยรวมของแอป
ทรงกลม 3 มิติ CSS ล้วน
ดูทรงกลม 3 มิติจาก CSS ล้วนใน CodePen
ภาพเคลื่อนไหวนี้ดูซับซ้อนมาก แต่ใช้เทคนิคที่เราเคยเห็นในตัวอย่างก่อนหน้านี้ ความซับซ้อนมาจากการแสดงภาพเคลื่อนไหวขององค์ประกอบจํานวนมาก
เปิดเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome แล้วเลือกองค์ประกอบใดองค์ประกอบหนึ่งที่มีคลาส plane
รูปทรงกลมประกอบด้วยชุดของระนาบหมุนและซี่
ระนาบและซี่เหล่านี้อยู่ภายใน Wrapper <div>
และเป็นองค์ประกอบนี้ซึ่งกำลังหมุนโดยใช้ transform: rotate3d
.sphere-wrapper {
transform-style: preserve-3d;
width: 300px;
height: 300px;
position: relative;
animation: rotate3d 10s linear infinite;
}
@keyframes rotate3d {
0% {
transform: rotate3d(1, 1, 1, 0deg);
}
25% {
transform: rotate3d(1, 1, 1, 90deg);
}
50% {
transform: rotate3d(1, 1, 1, 180deg);
}
75% {
transform: rotate3d(1, 1, 1, 270deg);
}
100% {
transform: rotate3d(1, 1, 1, 360deg);
}
}
จุดจะฝังอยู่ในองค์ประกอบ plane
และ spoke
ซึ่งใช้ภาพเคลื่อนไหวที่ใช้การเปลี่ยนรูปแบบเพื่อปรับขนาดและแปล
ซึ่งจะทำให้เกิดเอฟเฟกต์การเต้น
.spoke-15 .dot,
.spoke-21 .dot {
animation: pulsate 0.5s infinite 0.83333333s alternate both;
background-color: #55ffee;
}
@-webkit-keyframes pulsate {
0% {
transform: rotateX(90deg) scale(0.3) translateZ(20px);
}
100% {
transform: rotateX(90deg) scale(1) translateZ(0px);
}
}
ขั้นตอนการสร้างภาพเคลื่อนไหวนี้คือการจับจังหวะให้ถูกต้องเพื่อสร้างเอฟเฟกต์การหมุนและพัลซิ่ง ภาพเคลื่อนไหวนั้นค่อนข้างตรงไปตรงมาและใช้วิธีการที่มีประสิทธิภาพมาก
คุณสามารถดูประสิทธิภาพของภาพเคลื่อนไหวนี้ได้โดยเปิดเครื่องมือสำหรับนักพัฒนาเว็บของ Chrome และบันทึกประสิทธิภาพขณะที่ภาพเคลื่อนไหวทำงานอยู่ หลังจากการโหลดครั้งแรก ภาพเคลื่อนไหวไม่ได้ทริกเกอร์เลย์เอาต์หรือ Paint และทำงานได้อย่างราบรื่น
บทสรุป
จากตัวอย่างเหล่านี้ คุณจะเห็นว่าการสร้างภาพเคลื่อนไหวของพร็อพเพอร์ตี้ 2-3 รายการโดยใช้เมธอดที่มีประสิทธิภาพสามารถสร้างภาพเคลื่อนไหวที่ยอดเยี่ยมได้ การใช้วิธีการที่มีประสิทธิภาพซึ่งอธิบายไว้ในคู่มือภาพเคลื่อนไหวเป็นค่าเริ่มต้นจะช่วยให้คุณมีเวลาสร้างเอฟเฟกต์ที่ต้องการได้โดยไม่ต้องกังวลว่าจะทำให้หน้าเว็บช้าลง