คุณสมบัติ transform เป็นหนึ่งในคุณสมบัติที่เหมาะสมที่สุดสำหรับการสร้างแอนิเมชัน เพราะได้รับ GPU acceleration (รันบน Compositor Thread) ไม่ทำให้เกิด layout reflow หรือ repaint ทั้งหน้า
ตัวอย่างโค้ด: การหมุน (Rotate)
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: auto;
border: 2px solid blue;
width: 300px;
height: 400px;
background-color: orange;
animation: myanim 3s;
}
@keyframes myanim {
30% {
transform: rotate(120deg);
}
}
</style>
</head>
<body>
<h1></h1>
<div>
<h1>Demo</h1>
</div>
</body>
</html>
ฟังก์ชัน transform ที่ใช้ได้:
translate(x, y),translateX(),translateY(),translateZ(),translate3d()rotate(angle),rotateX(),rotateY(),rotateZ(),rotate3d()scale(sx, sy),scaleX(),scaleY(),scaleZ(),scale3d()skew(ax, ay),skewX(),skewY()matrix(),matrix3d()perspective()
แนวทางปฏิบัติที่ดีที่สุด:
- ใช้
transformแทนtop/left/width/height/marginสำหรับการเคลื่อนที่/ขยาย - รวม transform หลายฟังก์ชันในคีย์เฟรมเดียว:
transform: translateX(100px) rotate(45deg) scale(1.2);
ใช้ - ตั้ง
transform-originให้เหมาะสม (default: center center)
will-change: transform บอกบราวเซอร์ล่วงหน้า (แต่ใช้อย่ามากเกินไป)
ประสิทธิภาพ: Transform + Opacity = "Cheap animations" ที่รัน 60fps ได้บนอุปกรณ์ทุกระดับ