Apa Itu Alat Ini?
cubic-bezier() adalah fungsi waktu CSS yang mengontrol bagaimana nilai yang dianimasikan atau bertransisi berakselerasi dan berdeselerasi seiring waktu, bukan bergerak dengan kecepatan konstan. Fungsi ini didefinisikan oleh dua titik kontrol — (x1, y1) dan (x2, y2) — yang membengkokkan kurva antara titik awal tetap (0,0) dan titik akhir tetap (1,1). Nilai x harus tetap antara 0 dan 1, tetapi nilai y bisa keluar dari rentang itu untuk menciptakan efek overshoot atau memantul.
Menyesuaikan empat angka desimal secara manual untuk mendapatkan rasa yang tidak terlalu kasar atau terlalu lembek membutuhkan banyak coba-coba. Alat ini menggantikan tebak-tebakan itu dengan manipulasi langsung: geser slider, lihat kurva melengkung dan bola pratinjau bergerak sesuai, lalu salin CSS setelah gerakannya terasa pas.
Sumber: CSS Easing Functions Level 1, W3C — spesifikasi yang mendefinisikan cubic-bezier() dan lima kata kunci bernama yang menjadi dasar preset alat ini.
Mengapa Menggunakannya?
- Grafik SVG langsung menunjukkan persis bagaimana kurva Anda melengkung di antara titik awal dan akhir yang tetap, dengan kedua titik kontrol dan garis pemandunya digambar dengan jelas.
- Tombol Play menganimasikan elemen pratinjau di sepanjang jalur menggunakan kurva persis Anda, sehingga Anda merasakan gerakannya, bukan hanya melihat grafik statis.
- Preset satu klik untuk lima fungsi easing bernama standar — ease, ease-in, ease-out, ease-in-out, dan linear — sesuai spesifikasi CSS Easing Functions.
- Nilai y bisa turun di bawah 0 atau melebihi 1, memungkinkan Anda membuat easing bergaya overshoot/pantul yang tidak bisa dihasilkan oleh kata kunci bernama.
- Menghasilkan CSS transition-timing-function yang siap ditempel — nilai yang sama juga berfungsi untuk animation-timing-function.
- Berjalan sepenuhnya di browser Anda — apa pun yang Anda atur tidak diunggah ke mana pun. Gratis, tanpa pendaftaran.
Cara Menggunakan
- Geser slider x1/y1 untuk mengatur titik kontrol pertama, yang membentuk awal animasi.
- Geser slider x2/y2 untuk mengatur titik kontrol kedua, yang membentuk akhir animasi.
- Perhatikan kurva hitam pada grafik — kurva yang menonjol di atas garis diagonal di awal berarti gerakan dimulai cepat, sedangkan yang tetap di bawahnya berarti dimulai lambat.
- Klik Play untuk melihat elemen pratinjau bergerak di sepanjang jalur menggunakan kurva Anda sebagai transition-timing-function.
- Coba preset (ease, ease-in, ease-out, ease-in-out, linear) sebagai titik awal, lalu sesuaikan slider dari sana.
- Salin CSS yang dihasilkan dan tempelkan ke aturan transition atau animation.
Contoh
Input
x1: 0.25, y1: 0.1, x2: 0.25, y2: 1Output
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);Ini adalah titik kontrol persis dari kata kunci standar CSS ease — mulai cepat, lalu perlambatan bertahap menuju akhir.
Mengapa nilai y bisa melebihi 0–1
Berbeda dengan sumbu x, yang mewakili waktu dan harus berjalan dari 0 hingga 1, sumbu y mewakili kemajuan nilai yang dianimasikan dan tidak memiliki batasan itu. Mengatur y1 di bawah 0 atau y2 di atas 1 membuat kurva turun melewati nilai awal atau melampaui nilai akhir sebelum akhirnya menetap — inilah dasar efek overshoot dan antisipasi yang digunakan pada umpan balik saat tombol ditekan, kemunculan modal, dan mikro-interaksi UI yang playful. Tidak ada satu pun dari lima kata kunci bernama (ease, ease-in, ease-out, ease-in-out, linear) yang bisa menghasilkan ini; untuk itu diperlukan cubic-bezier() kustom.
transition-timing-function vs. animation-timing-function
Nilai cubic-bezier() yang dihasilkan alat ini bekerja identik di kedua properti. Gunakan transition-timing-function saat gerakan dipicu oleh perubahan status (seperti hover atau pergantian class), dan animation-timing-function di dalam aturan animasi berbasis @keyframes ketika Anda membutuhkan rasa yang sama diterapkan secara otomatis atau berulang.
Pola easing yang umum
- Respons UI yang tegas (tombol, sakelar): jaga titik kontrol dekat dengan garis diagonal dengan sedikit kecenderungan ease-out, misalnya cubic-bezier(0.4, 0, 0.2, 1).
- Kurva standar Material Design: cubic-bezier(0.4, 0, 0.2, 1) — mulai cepat, akhir lembut, banyak digunakan untuk transisi panel dan kartu.
- Pantulan/overshoot: naikkan y2 di atas 1, misalnya cubic-bezier(0.34, 1.56, 0.64, 1), untuk kesan playful saat muncul.
- Antisipasi sebelum bergerak: turunkan y1 di bawah 0 sehingga elemen sedikit mundur sebelum bergerak maju.
- Ease-in-out yang halus untuk animasi berulang: jaga kurva hampir simetris terhadap pusatnya.
Memadukan dengan alat CSS lainnya
Kurva easing jarang berdiri sendiri — biasanya diterapkan pada elemen yang juga membutuhkan bayangan, sudut membulat, atau gradien. Hasilkan gaya visual dengan alat CSS lain di bawah ini, lalu tambahkan fungsi waktu dari alat ini ke aturan atau deklarasi transition/animation yang sama.
Pertanyaan yang Sering Diajukan
Apa sebenarnya arti empat angka dalam cubic-bezier()?
Angka-angka itu adalah koordinat dua titik kontrol, (x1, y1) dan (x2, y2), yang membengkokkan kurva Bézier yang berjalan dari titik awal tetap di (0,0) ke titik akhir tetap di (1,1). Sumbu x mewakili waktu yang berlalu (0 hingga 1) dan sumbu y mewakili seberapa jauh properti yang dianimasikan telah berkembang, itulah sebabnya x1 dan x2 harus tetap dalam rentang 0–1 sementara y1 dan y2 bisa keluar dari rentang itu.
Apa perbedaan antara ease, ease-in, ease-out, dan ease-in-out?
ease (nilai default CSS) dimulai cepat lalu melambat dengan lembut. ease-in dimulai lambat dan berakselerasi menuju akhir, berguna untuk elemen yang meninggalkan layar. ease-out dimulai cepat dan berdeselerasi, berguna untuk elemen yang masuk ke layar. ease-in-out lambat di kedua ujungnya dan lebih cepat di tengah, memberikan kesan yang halus dan simetris.
Bisakah saya menggunakan nilai cubic-bezier() yang sama untuk transisi maupun animasi?
Bisa. transition-timing-function dan animation-timing-function menerima sintaks cubic-bezier() yang persis sama dan menghasilkan kurva easing yang sama — satu-satunya perbedaan adalah fitur CSS mana (transisi atau animasi keyframes) tempat fungsi waktu itu dipasang.
Mengapa kurva saya terlihat aneh saat y1 atau y2 sangat besar atau negatif?
Itu wajar — mendorong nilai y jauh di luar rentang 0–1 menciptakan overshoot yang kuat, di mana nilai yang dianimasikan melampaui targetnya secara signifikan sebelum menetap. Ini adalah efek yang valid dan sering disengaja, tetapi jika tidak diinginkan, kembalikan y1 dan y2 lebih dekat ke rentang 0–1.
Apakah kurva kustom lebih baik daripada sekadar menggunakan kata kunci bernama?
Belum tentu — kelima kata kunci (ease, ease-in, ease-out, ease-in-out, linear) mencakup sebagian besar kebutuhan sehari-hari dan lebih mudah dibaca dalam kode. Gunakan cubic-bezier() kustom saat Anda membutuhkan rasa spesifik yang tidak disediakan oleh kata kunci, seperti pantulan, hentakan yang lebih tajam, atau menyesuaikan dengan spesifikasi gerakan sistem desain tertentu.