Transition dengan mulus menganimasikan properti dari nilai lamanya ke yang baru seiring waktu, daripada mengubahnya secara instan. Anda mendeklarasikan apa yang dianimasikan dan berapa lama, kemudian memicu dengan mengubah properti (sering via :hover atau class).
.button {
background: blue;
transition: background 0.3s ease; /* animate background over 300ms */
}
.button:hover {
background: darkblue; /* on hover, it fades smoothly instead of snapping */
}
Empat bagian dari singkatan
transition: background 0.3s ease 0s;
/* │ │ │ └── delay before starting */
/* │ │ └─────── timing function (the easing curve) */
/* │ └──────────── duration */
/* └─────────────────────── property to animate (or `all`) */
Menganimasikan beberapa properti
.card {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover {
transform: translateY(-4px); /* lifts up */
box-shadow: 0 8px 20px rgba(0,0,0,0.2); /* + deeper shadow */
}
Sebutkan setiap properti (dipisahkan koma) daripada menggunakan all, yang dapat secara tidak sengaja menganimasikan hal-hal yang tidak Anda maksudkan dan merusak performa.
Timing functions
transition-timing-function: ease; /* slow-fast-slow (default) */
/* linear | ease-in | ease-out | ease-in-out */
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); /* custom curve */
Performa: animasikan transform/opacity
/* ✅ cheap — GPU-composited, no layout recalculation */
transition: transform 0.3s, opacity 0.3s;
/* ❌ expensive — animating width/top/left triggers layout on every frame */
transition: width 0.3s, left 0.3s;
Lebih suka menganimasikan transform dan opacity; keduanya ditangani oleh compositor tanpa menjalankan kembali layout, sehingga tetap smooth (60fps).
Aksesibilitas
@media (prefers-reduced-motion: reduce) {
* { transition: none; } /* respect users who get motion sickness */
}
Mengapa ini penting
Transisi menambahkan polish yang membuat UI terasa responsif dan hidup (efek hover, perubahan state yang mulus) hanya dengan satu baris.
Mengetahui cara menganimasikan transform/opacity untuk performa — dan menghormati prefers-reduced-motion — itulah yang membedakan motion yang smooth dan accessible dari animasi yang berkecut-kecut.
