ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่
เรียนรู้ว่าคุณสมบัติใดเร่งด้วย GPU และคุณสมบัติใดกระตุ้นการจัดวางและการวาดใหม่ที่ใช้ทรัพยากรสูง
ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่ เป็นบทเรียน CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
กระบวนการแสดงผล
เบราว์เซอร์แสดงผลในสามขั้นตอน ได้แก่ การจัดวาง (ขนาดและตำแหน่ง) → การวาด (พิกเซล) → การประกอบ (การรวมชั้นของ GPU) การทำแอนิเมชันให้คุณสมบัติที่ทำให้เกิดขั้นตอนก่อนหน้านั้นใช้ทรัพยากรมาก
คุณสมบัติที่ทำให้เกิดการจัดวาง
การเปลี่ยนแปลงคุณสมบัติเหล่านี้บังคับให้เบราว์เซอร์คำนวณการจัดวางใหม่ ซึ่งอาจครอบคลุมทั้งหน้า หลีกเลี่ยงการทำแอนิเมชันให้คุณสมบัติเหล่านี้:
width,heightmargin,paddingtop,leftfont-sizedisplay
คุณสมบัติที่ทำให้เกิดการวาด
คุณสมบัติเหล่านี้ข้ามการจัดวาง แต่ต้องวาดพิกเซลใหม่ จึงใช้ทรัพยากรในระดับปานกลาง:
background-colorcolorbox-shadowborder
คุณสมบัติที่มีเฉพาะการประกอบ
คุณสมบัติเหล่านี้ข้ามทั้งการจัดวางและการวาด เบราว์เซอร์จึงต้องประกอบเฉพาะชั้นที่แปลงเป็นพิกเซลไว้ล่วงหน้าเท่านั้น ใช้ทรัพยากรน้อยมากและเร่งด้วย GPU:
transformopacity
กฎทองของแอนิเมชัน CSS
สำหรับแอนิเมชัน 60 เฟรมต่อวินาทีที่ลื่นไหล ให้ทำแอนิเมชันเฉพาะ transform และ opacity เท่านั้น ใช้ transform: translate() แทน top/left และใช้ opacity แทนการค่อย ๆ ปรากฏหรือหายไปด้วย display
<div class="box demo-active">Box</div>คุณสมบัติการแจ้งการเปลี่ยนแปลงล่วงหน้า
will-change บอกให้เบราว์เซอร์เลื่อนองค์ประกอบขึ้นไปอยู่บนชั้น GPU ของตนเอง ก่อน ที่แอนิเมชันจะเริ่ม เพื่อป้องกัน "การกะพริบจากการเลื่อนชั้น" ระหว่างแอนิเมชัน
<div class="animated">Animated</div>การตั้งค่าการเปลี่ยนแปลงล่วงหน้าเป็นอัตโนมัติ
ตั้งค่า will-change: auto หรือลบคุณสมบัตินี้ออกทั้งหมดเมื่อแอนิเมชันเสร็จสิ้น การเลื่อนองค์ประกอบขึ้นชั้น GPU มากเกินไปจะทำให้หน่วยความจำ GPU สูญเปล่า
การวัดด้วย DevTools
ใช้แท็บ ประสิทธิภาพของ DevTools ในเบราว์เซอร์โครมเพื่อบันทึกและตรวจสอบเวลาในแต่ละเฟรม แท็บ การแสดงผลสามารถเปิดการแสดงการวาดใหม่เป็นแสงกะพริบ ซึ่งจะแสดงด้วยการซ้อนสีเขียวว่าองค์ประกอบใดถูกวาดใหม่ในแต่ละเฟรม
ใช้การแปลงแทนด้านบนและซ้าย
การปรับปรุงที่ส่งผลมากที่สุดคือแทนที่แอนิเมชันตำแหน่งด้วยการแปลง:
<div class="fly demo-active">Fly</div>ต้นทุนของการเปลี่ยนสี
การเปลี่ยนสีพื้นหลังทำให้เกิดการวาดใหม่ แต่ไม่ทำให้เกิดการจัดวางใหม่ จึงเหมาะสมสำหรับองค์ประกอบขนาดเล็ก สำหรับพื้นหลังขนาดใหญ่ ให้พิจารณาใช้องค์ประกอบเทียมที่มีการเปลี่ยนค่าความทึบแสงแทน:
<button class="btn demo-active">Hover me</button>คุณสมบัติการจำกัดขอบเขต
คุณสมบัติ contain บอกเป็นนัยแก่เบราว์เซอร์ว่าองค์ประกอบและโครงสร้างย่อยขององค์ประกอบนั้นเป็นอิสระต่อกัน วิธีนี้จำกัดขอบเขตที่ต้องตรวจสอบการจัดวางใหม่ จึงช่วยเพิ่มประสิทธิภาพการวาดใหม่
<div class="widget">Widget</div>ตรวจสอบอย่างรวดเร็ว
คุณสมบัติ CSS สองรายการใดที่สามารถทำแอนิเมชันในขั้นการประกอบได้โดยไม่ทำให้เกิดการจัดวางหรือการวาด
ทบทวน
การทำแอนิเมชันให้คุณสมบัติการจัดวาง (ความกว้าง ด้านบน ระยะขอบ) ทำให้ต้องคำนวณใหม่ซึ่งใช้ทรัพยากรมาก คุณสมบัติการวาด (สี พื้นหลัง) ใช้ทรัพยากรน้อยกว่า มีเพียง transform และ opacity ที่ทำแอนิเมชันในขั้นการประกอบของ GPU ได้โดยไม่ทำให้เกิดการจัดวางหรือการวาด ควรเลือกใช้คุณสมบัติเหล่านี้เสมอเพื่อให้แอนิเมชันลื่นไหลและมีประสิทธิภาพ
คำถามที่พบบ่อย
บทเรียน “ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่”
เรียนรู้ว่าคุณสมบัติใดเร่งด้วย GPU และคุณสมบัติใดกระตุ้นการจัดวางและการวาดใหม่ที่ใช้ทรัพยากรสูง คุณปฏิบัติ CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CSS Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CSS Academy นี้ได้ไหม
ได้ บทเรียน CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ระยะเวลาและจังหวะของคุณสมบัติการเปลี่ยนผ่าน
- ฟังก์ชันผ่อนความเร็ว: ease linear cubic-bezier
- การเปลี่ยนผ่านคุณสมบัติหลายรายการ
- ประสิทธิภาพ: คุณสมบัติที่แปลงได้เทียบกับคุณสมบัติที่ต้องวาดใหม่