Transform — CSS

Transform adalah properti CSS untuk mengubah bentuk dan posisi elemen — menggeser (translate), memutar (rotate), membesarkan atau mengecilkan (scale), dan memir

Transform adalah properti CSS untuk mengubah bentuk dan posisi elemen — menggeser (translate), memutar (rotate), membesarkan atau mengecilkan (scale), dan memiringkan (skew) — tanpa mengubah layout di sekitarnya.

🧪 Tebakan cepat — tetangganya ikut geser? Sebuah kartu dikasih transform: translateX(50px). Apakah elemen di sebelahnya ikut kedorong? Jawabannya: nggak — transform cuma mindahin "gambar"-nya, ruang aslinya tetap dipesan. Itu bedanya sama margin-left: 50px yang bikin tetangga ikut geser.

Pernah pengen bikin tombol yang sedikit gede pas di-hover, kartu yang miring 3 derajat biar lebih dinamis, atau ikon yang muter pas loading? Itu semua kerjaan transform. Properti ini bisa scale (besarin/kecilin), rotate (puter), translate (geser), skew (miringin) — semua tanpa ngubah layout halaman. Browser gak perlu re-layout, jadi animasi pake transform super mulus.

🤔 Kenapa transform hemat performa? Properti CSS lain (width, top, margin) trigger "reflow" — browser harus hitung ulang posisi semua elemen sekitar. Transform cuma trigger "compositing" — kerjaan murni GPU. Itu kenapa animasi smooth pake transform, animasi tersendat pake width.

transform: rotate(90deg);

/* Bisa di-chain — apply dari kiri ke kanan */
transform: scale(0.5) translate(-50%, -50%) rotate(0.5turn);

Tiap fungsi punya varian per-sumbu: scaleX/scaleY, translateX/translateY, rotateX/rotateY (3D).

🎭 Analogi sehari-hari

transform = mengubah posisi/bentuk POSTER tanpa cabut paku dari tembok. Geser, putar, miringkan, kecilkan — paku tetap di posisi awal (browser tidak relayout halaman). Performa cepat.

⚠️ Jebakan yang sering ditemui

🎯 transform vs position vs margin — geser elemen pakai apa?

  • Animasi smooth (60fps)transform: translate(x, y) (GPU compositing)
  • Layout permanent shift dengan elemen lain ngikutinmargin (browser relayout)
  • Tarik dari spot biasa tanpa ganggu layoutposition: relative + top/left
  • Lepas dari alur halaman penuhposition: absolute/fixed
  • Centering presisitransform: translate(-50%, -50%) di absolute element

Aturan: untuk animasi/hover state = transform. Untuk static layout = margin/position. Salah pilih = janky animation atau layout bugs.

TL;DR: transform ngubah tampilan elemen tanpa relayout — scale/translate/rotate/skew (+ varian X/Y/Z untuk 3D). GPU-accelerated → animasi smooth 60fps. Multiple transform di-apply dari kiri ke kanan, urutan penting (translate rotaterotate translate). Bikin stacking context baru. Pakai transform untuk animasi, position/margin untuk static layout.

Yang akan kamu pelajari