Panduan lengkap CSS Transforms untuk manipulasi elemen 2D/3D
CSS Transforms memungkinkan Anda memodifikasi space koordinat dari model visual CSS, memungkinkan rotasi, skewing, scaling, dan translasi elemen.
/* Basic 2D Transform */
.box {
transform: rotate(45deg);
}
/* Multiple Transforms */
.card {
transform: translateX(50px) scale(1.2);
}
/* 3D Transform */
.cube {
transform: rotateX(60deg) rotateY(30deg);
transform-style: preserve-3d;
}
đ Penjelasan Detail:
âĸ transform
- Memodifikasi space koordinat elemen
âĸ transform-origin
- Mengubah titik origin transformasi
âĸ transform-style
- Menentukan bagaimana elemen nested di-render dalam 3D space
âĸ perspective
- Menentukan jarak antara user dan z=0 plane
/* Translate */
.move {
transform: translate(50px, 20px);
}
/* Scale with Origin */
.zoom {
transform: scale(1.5);
transform-origin: top left;
}
/* 3D Rotation */
.rotate-3d {
transform: rotate3d(1, 1, 0, 45deg);
perspective: 500px;
}
2D Transforms: Chrome 4+, Firefox 3.5+, Safari 3.1+, IE 9+. 3D Transforms: Chrome 12+, Firefox 10+, Safari 4+, IE 10+.
/* Common Transform Functions */
.translate {
transform: translate(50px, 20px);
}
.rotate {
transform: rotate(30deg);
}
.scale {
transform: scale(1.2, 0.8);
}
.skew {
transform: skew(20deg, 10deg);
}
đ Penjelasan Detail:
âĸ translate(x,y)
- Memindahkan elemen sepanjang sumbu X dan Y
âĸ rotate(angle)
- Memutar elemen sebesar sudut tertentu
âĸ scale(x,y)
- Mengubah ukuran elemen (1 = ukuran normal)
âĸ skew(x-angle,y-angle)
- Membuat elemen miring/miring
/* 3D Transform Functions */
.translate-3d {
transform: translate3d(50px, 20px, 100px);
}
.rotate-3d {
transform: rotate3d(1, 1, 1, 45deg);
}
.scale-3d {
transform: scale3d(1.2, 1.2, 1.5);
}
.perspective {
perspective: 1000px;
transform: rotateY(45deg);
}
3D Transforms: Chrome 12+, Firefox 10+, Safari 4+, IE 10+. Requires vendor prefixes (-webkit-, -moz-) for full support.
Gunakan transforms untuk animasi performa tinggi dan efek visual yang smooth tanpa mempengaruhi layout.
/* â
Good - Hardware accelerated */
.animate {
transition: transform 0.3s ease;
}
.animate:hover {
transform: scale(1.1);
}
/* â Avoid - Overusing 3D transforms */
.over-3d {
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);
perspective: 200px;
}
đ Penjelasan Detail:
âĸ Gunakan untuk animasi - Transforms di-handle oleh GPU untuk performa lebih baik
âĸ Hindari transform berlebihan - Terlalu banyak transform kompleks bisa mengurangi performa
âĸ Gunakan will-change - Beri tahu browser elemen mana yang akan di-transform
âĸ Perhatikan transform-origin - Titik origin mempengaruhi hasil transformasi