Pertama-tama, ketika sebuah elemen diberi atribut relative, absolute, atau fixedpositioning, Anda akan dapat memindahkannya dengan mengubah atribut top, right, left, bottom
Meskipun Anda dapat memindahkannya dan menganimasikan gerakan ini, ini adalah Atribut Pemosisian, tidak dimaksudkan untuk digunakan pada gerakan desain-y. Elemen posisi absolut(top, right, left, absolute0 menempel pada posisi "piksel penuh"
“Jangan bingung memposisikan dengan gerakan desain-y. ”
Jika Anda ingin elemen Anda yang memiliki absolute_1 pindah ke absolute2, browser akan merender animasi piksel demi piksel
absolute3 >absolute4 > absolute5 > absolute6
Animasi dapat dilakukan dengan pemosisian absolut, tetapi Anda akan bingung dengan konsep Pemosisian dan gerakan Desain-y
Jadi cara terbaik untuk mendapatkan efek halus untuk animasi yang sama persis ini adalah dengan mengubah atribut absolute7 elemen. Tidak seperti atribut pemosisian, absolute_7 dapat menginterpolasi pada posisi subpiksel. Jika Anda mendorong elemen Anda (absolute_1) 1 piksel ke bawah saat fixed0, dengan menggunakan absolute7 browser Anda akan membuat animasi jauh lebih halus
fixed2 >fixed3 > fixed4 >fixed5 >fixed6 >fixed7 >fixed8 >fixed9 >top0 dan akhirnya________10______1
Meskipun kode terlihat lebih berat untuk diproses, browser modern cenderung bekerja dengan baik dalam hal absolute7 animasi, menurut Paul Irish, teknisi di tim Chrome
Saya telah melakukan beberapa eksperimen dan menyadari bahwa top3 melakukan interpolasi piksel juga, tetapi di sisi lain, jauh lebih berat untuk dianimasikan jika dibandingkan dengan absolute7
Saya telah membuat dua contoh cepat untuk menunjukkan perbedaan minimal pada kehalusan antara animasi top3 dan absolute7 pada efek paralaks dasar
top_3 paralaks animasi
Parallax menggunakan atribut background-position untuk menganimasikan
absolute_7 paralaks animasi
Parallax menggunakan translate() untuk menganimasikan layer latar belakang
Untuk menyelesaikannya, coba gunakan Atribut Pemosisian hanya untuk tujuan utamanya, untuk memposisikan elemen di layar. Dan untuk gerakan, gunakan atribut absolute_7 untuk menghasilkan animasi yang halus dan proses yang murah
Ini mungkin bukan masalah besar untuk situs web yang tidak terlalu rumit, tetapi jika menyangkut platform yang dapat diskalakan, mendapatkan kinerja CSS yang tepat sangat penting untuk meningkatkan UX dan keandalan sistem.
Properti transition_ adalah properti singkatan yang digunakan untuk mewakili hingga empat properti tulisan tangan terkait transisi
.element { transition: background-color 0.5s ease; }Sintaksis
transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];_Demo
transition properti memungkinkan elemen untuk mengubah nilai selama durasi yang ditentukan, menjiwai perubahan properti, daripada membuatnya segera terjadi. Jadi, jika kita memiliki, katakanlah, sebuah kotak dengan latar belakang merah yang ingin kita ubah menjadi latar belakang hijau saat diarahkan, kita dapat menjangkau tepat ke properti transition untuk berpindah di antara warna latar belakang
CodePen Embed Fallback
Menentukan properti mana yang akan ditransisikan
Perhatikan bahwa kami telah memanggil properti background-color dalam deklarasi transition. Itu memberi tahu browser bahwa kami berencana untuk mentransisikan warna latar belakang dan tidak ada yang lain saat transisi terjadi antara keadaan melayang dan tidak melayang. Perhatikan juga, bahwa kami memberi tahu browser bahwa transisi harus memakan waktu dua detik dan ikuti dan ease-out fungsi pengaturan waktu, yang berarti transisi dimulai dengan cepat, lalu melambat menjelang akhir
Anda dapat menentukan properti tertentu seperti yang kami miliki di atas, atau menggunakan nilai transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];0 untuk merujuk ke properti transisi
.element { transition: all 0.5s ease; background: red; padding: 10px; } .element:hover { background: green; padding: 20px; }transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];_0 ditentukan untuk bagian transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];2 dari steno. Anda juga dapat memisahkan kumpulan nilai dengan koma untuk melakukan transisi yang berbeda pada properti yang berbeda
.element { transition: background 0.2s ease, padding 0.8s linear; }_Sebagian besar, urutan nilai tidak menjadi masalah — kecuali ada penundaan yang ditentukan. Jika Anda menentukan penundaan, Anda harus menentukan durasi terlebih dahulu. Nilai pertama yang dikenali browser sebagai nilai waktu yang valid akan selalu mewakili durasi. Setiap nilai waktu valid selanjutnya akan diuraikan sebagai penundaan
Beberapa properti tidak dapat ditransisikan karena bukan properti yang dapat dianimasikan. Lihat spesifikasi untuk daftar lengkapnya
Dengan menentukan transisi pada elemen itu sendiri, Anda menentukan transisi terjadi di kedua arah. Yaitu, ketika gaya diubah (mis. g. saat melayang), properti mereka akan bertransisi, dan ketika gaya berubah kembali (mis. g. saat hover off) mereka akan bertransisi. Misalnya, transisi demo berikut saat melayang, tetapi tidak saat melayang
CodePen Embed Fallback
Dukungan peramban
Data dukungan browser ini berasal dari , yang lebih detail. Angka menunjukkan bahwa browser mendukung fitur tersebut pada versi tersebut dan yang lebih baru