3D Transform & Perspective — CSS

CSS mendukung transformasi 3D untuk efek visual yang mendalam. perspective — mengatur "jarak mata" ke elemen (semakin kecil = efek semakin dramatis)…

Layar itu datar, tapi CSS bisa memutar elemen di ruang tiga dimensi, kayak kartu yang dimiringkan atau dibalik di tanganmu. Biar putarannya kelihatan punya kedalaman, CSS butuh tahu seberapa jauh mata penonton dari elemen itu. Jarak itulah perspective.

🧪 Tebakan cepat: kartu diputar 40 derajat ke samping, tapi pembungkusnya gak punya perspective. Kartunya kelihatan miring ke dalam layar, atau cuma jadi lebih sempit? Tebak dulu, jawabannya ada di bagian "Panggung dan kartu".

Panggung dan kartu

<div class="panggung">
  <div class="kartu">Halo</div>
</div>

<style>
.panggung {
  perspective: 800px;
}
.kartu {
  transform: rotateY(40deg);
}
</style>

Hasilnya, sisi kartu yang menjauh kelihatan lebih kecil, jadi kartunya terasa miring ke dalam layar. Jawaban tebakan: tanpa perspective, kartu yang sama cuma kelihatan lebih sempit, datar.

Tiga sumbu putar

Mau dua putaran sekaligus? Tulis dalam satu transform, dipisah spasi: transform: rotateX(20deg) rotateY(30deg);

Jarak mata dan sudut pandang

Jangan ketuker dengan transform-origin: itu titik pusat putaran elemennya, bukan posisi penonton.

Kartu yang bisa dibalik

Kartu dua sisi butuh tiga properti:

.card-container { perspective: 1000px; }
.card { transform-style: preserve-3d; transition: transform 0.6s; }
.card-container:hover .card { transform: rotateY(180deg); }
.card-front, .card-back {
  position: absolute;
  backface-visibility: hidden;
}
.card-back { transform: rotateY(180deg); }

⚠️ Jebakan yang sering ketemu

TL;DR: perspective di parent menentukan jarak mata (kecil berarti dramatis, besar berarti halus), lalu child diputar dengan rotateX(), rotateY(), atau rotateZ(). perspective-origin mengatur dari mana penonton melihat. Buat kartu yang dibalik: transform-style: preserve-3d di kartu dan backface-visibility: hidden di kedua sisinya.

Yang akan kamu pelajari