Transisi CSS
Bikin perubahan style di websitemu jadi lebih smooth! Pelajari cara menggunakan properti `transition` CSS untuk menganimasikan perubahan nilai properti secara bertahap.
Oke, kita lanjut ke materi "bonus" yang bisa bikin tampilan website jadi lebih halus dan interaktif tanpa perlu JavaScript yang rumit.
Bikin Perubahan Jadi Smooth: Kenalan Sama Transisi CSS!
Pernah liat tombol yang warnanya berubah alus pas di-hover mouse? Atau kotak yang ukurannya ngegedein pelan-pelan? Efek-efek "smooth" kayak gitu seringkali dibuat pake Transisi CSS (CSS Transitions).
Transisi CSS ngebolehin kamu buat ngatur gimana perubahan nilai sebuah properti CSS itu terjadi: apakah langsung jeglek berubah, atau berubah secara bertahap (transisi) dalam rentang waktu tertentu. Ini bisa bikin interaksi pengguna jadi kerasa lebih alami dan enak diliat.
Gimana Cara Kerja Transisi CSS?
Intinya, kamu ngasih tau browser: "Hei, kalau properti X di elemen ini nilainya berubah (misalnya karena di-hover atau diubah sama JavaScript), jangan langsung diganti ya, tapi ubah pelan-pelan selama sekian detik dengan gaya animasi tertentu."
Ada beberapa properti utama yang dipake buat ngatur transisi:
-
transition-property
:- Nentuin properti CSS mana aja yang mau dikasih efek transisi.
- Nilainya bisa:
none
: Gak ada properti yang ditransisiin.all
(default): Semua properti yang bisa ditransisiin bakal kena efek transisi.- Nama properti spesifik (misal,
width
,background-color
,opacity
). Kamu bisa nyantumin beberapa properti dipisah koma (misal,width, color, transform
).
- Gak semua properti CSS bisa ditransisiin. Umumnya properti yang nilainya bisa "diinterpolasi" (dihitung nilai tengahnya) kayak angka, panjang, warna, itu bisa. Properti kayak
display
biasanya gak bisa ditransisiin secara halus.
-
transition-duration
:- Nentuin berapa lama (durasi) transisi itu berlangsung, dari nilai awal ke nilai akhir.
- Nilainya pake satuan waktu:
s
(detik) ataums
(milidetik). Misal,0.5s
(setengah detik),300ms
(300 milidetik). - Defaultnya
0s
, artinya gak ada transisi (langsung berubah). Ini properti yang wajib diset kalau mau ada efek transisi!
-
transition-timing-function
:- Nentuin kurva percepatan atau "gaya" animasi transisinya. Ini ngatur gimana kecepatan perubahan nilai selama durasi transisi.
- Nilai umum:
ease
(default): Mulai pelan, cepet di tengah, selesai pelan.linear
: Kecepatan konstan dari awal sampe akhir.ease-in
: Mulai pelan, terus makin cepet.ease-out
: Mulai cepet, terus makin pelan di akhir.ease-in-out
: Miripease
, tapi lebih simetris.cubic-bezier(n,n,n,n)
: Buat bikin kurva kustom sendiri (lebih advance).
- Coba deh main-main sama nilai ini, efeknya bisa beda-beda banget!
-
transition-delay
:- Nentuin waktu tunda (delay) sebelum transisi dimulai setelah properti pemicunya berubah.
- Nilainya pake satuan waktu (
s
ataums
). Defaultnya0s
(langsung mulai). - Contoh:
transition-delay: 1s;
(transisi baru mulai 1 detik setelah pemicu).
Contoh Penggunaan Properti Transisi Individual:
.tombol-transisi {
background-color: dodgerblue;
color: white;
padding: 10px 20px;
border: none;
cursor: pointer;
/* Terapkan transisi ke properti background-color dan transform */
transition-property: background-color, transform;
transition-duration: 0.3s; /* Durasi transisi 0.3 detik */
transition-timing-function: ease-out; /* Gaya animasi ease-out */
/* transition-delay: 0s; (default, tidak perlu ditulis) */
}
.tombol-transisi:hover {
background-color: royalblue; /* Nilai baru pas di-hover */
transform: scale(1.1); /* Sedikit membesar pas di-hover */
}
Di contoh ini, pas tombol di-hover, perubahan background-color
dan transform
(scale) bakal terjadi secara halus selama 0.3 detik dengan gaya ease-out
.
Shorthand transition
: Nulis Semua Jadi Satu!
Biar lebih ringkes, kamu bisa pake properti shorthand transition
buat nulis semua properti transisi di atas jadi satu baris.
- Sintaks umum:
transition: property duration timing-function delay;
- Urutan itu penting kalau ada nilai waktu: Browser biasanya nginterpretasiin nilai waktu pertama sebagai
transition-duration
dan nilai waktu kedua (kalau ada) sebagaitransition-delay
. - Kalau mau nerapin transisi ke beberapa properti dengan settingan beda-beda, kamu bisa misahinnya pake koma.
Contoh Penggunaan Shorthand transition
:
.kotak-animasi {
width: 100px;
height: 100px;
background-color: mediumseagreen;
opacity: 1;
/* Transisi buat semua properti yang bisa ditransisiin, durasi 0.5s, ease-in-out */
transition: all 0.5s ease-in-out;
}
.kotak-animasi:hover {
width: 150px;
height: 150px;
background-color: tomato;
opacity: 0.7;
border-radius: 50%; /* Ini juga bakal ikut transisi kalau 'all' dipake */
}
.link-beda-transisi {
color: steelblue;
font-size: 16px;
text-decoration: none;
/* Transisi buat color durasinya 0.2s, buat font-size durasinya 0.4s */
transition: color 0.2s linear, font-size 0.4s ease-out 0.1s;
/* font-size transisinya mulai setelah delay 0.1s */
}
.link-beda-transisi:hover {
color: orangered;
font-size: 18px;
}
Pake shorthand transition
ini cara yang paling umum dan efisien. Kalau cuma mau set durasi dan properti, bisa juga transition: width 0.5s;
(timing-function dan delay bakal pake default).
Apa Aja yang Memicu Transisi?
Transisi bakal terjadi pas nilai properti CSS yang kamu definisiin di transition-property
itu berubah. Perubahan ini bisa dipicu oleh:
- Pseudo-classes: Paling umum
:hover
,:focus
,:active
,:checked
. - JavaScript: Kalau kamu ngubah style elemen pake JavaScript, transisinya juga bakal jalan.
- Perubahan class pada elemen (yang class barunya punya nilai properti beda).
Tips & Pertimbangan Saat Pake Transisi
- Performa: Transisi buat properti kayak
transform
(translate
,scale
,rotate
) danopacity
itu biasanya lebih enteng dan smooth karena bisa di-handle sama GPU (kartu grafis). Hindari nganimasikan properti yang bisa nyebabin layout reflow (kayakwidth
,height
,margin
,padding
pada elemen block) secara berlebihan kalau performa jadi perhatian, karena itu lebih berat buat browser. - Jangan Berlebihan: Efek transisi yang terlalu banyak, terlalu lama, atau terlalu "heboh" bisa jadi malah ganggu dan bikin pusing pengguna. Gunakan secukupnya buat ningkatin UX, bukan buat pamer.
- Aksesibilitas: Beberapa pengguna mungkin sensitif sama gerakan. CSS punya media feature
prefers-reduced-motion
yang bisa kamu pake buat ngurangin atau ngilangin animasi buat pengguna yang nyalain settingan itu di OS-nya.css @media (prefers-reduced-motion: reduce) { .elemen-dengan-transisi-heboh { transition: none; /* Matikan transisi */ } }
- Tes di Berbagai Browser: Walaupun dukungan transisi udah bagus banget, selalu ada baiknya tes di beberapa browser utama buat mastiin tampilannya konsisten.
Transisi CSS ini cara yang relatif gampang buat nambahin sentuhan "kehidupan" dan polesan profesional ke desain web-mu. Dengan sedikit kreativitas, kamu bisa bikin interaksi jadi lebih menarik dan responsif.
Ini baru langkah awal ke dunia animasi di web. Kalau kamu pengen animasi yang lebih kompleks dengan kontrol step-by-step yang lebih detail, nanti kita bakal kenalan sama Animasi CSS menggunakan @keyframes
!
Kuis Transisi CSS
Pertanyaan 1 dari 5
Apa fungsi utama dari properti `transition-duration` dalam CSS Transitions?