Sebelum karir saya terjun ke pengembangan, saya melakukan banyak pekerjaan grafik gerak di After Effects. Tetapi bahkan dengan latar belakang itu, saya masih menemukan animasi di web cukup membingungkan Show
Grafik video dirancang dalam rasio tertentu dan kemudian diekspor. Selesai. Tapi tidak ada "pengaturan ekspor" di web. Kami hanya mendorong kode ke dunia dan animasi kami harus beradaptasi dengan perangkat apa pun yang mereka gunakan Jadi mari kita bicara animasi responsif. Bagaimana pendekatan terbaik kami untuk menganimasikan di web liar? . Mari kita mulai dengan beberapa pembingkaian… Bagaimana animasi ini akan digunakan?Artikel Zach Saucier tentang animasi responsif merekomendasikan untuk mengambil langkah mundur untuk memikirkan hasil akhir sebelum beralih ke kode
Ini saran yang bagus. Bagian besar dari mendesain animasi responsif adalah mengetahui apakah dan bagaimana animasi itu perlu diskalakan, lalu memilih pendekatan yang tepat dari awal Sebagian besar animasi termasuk dalam kategori berikut
Animasi yang lancar dan terarah membutuhkan cara berpikir dan solusi yang berbeda. Mari lihat… Animasi cairSeperti kata Andy Bell. Jadilah mentor browser, bukan micromanagernya — berikan browser beberapa aturan dan petunjuk yang kuat, lalu biarkan browser membuat keputusan yang tepat untuk orang yang mengunjunginya. (Inilah slide dari presentasi itu. ) Animasi yang lancar adalah tentang membiarkan browser melakukan kerja keras. Banyak animasi dapat dengan mudah disesuaikan dengan konteks yang berbeda hanya dengan menggunakan unit yang tepat sejak awal. Jika Anda mengubah ukuran pena ini, Anda dapat melihat bahwa animasi menggunakan unit viewport berskala dengan lancar saat browser menyesuaikan CodePen Embed Fallback Kotak ungu bahkan mengubah lebar pada titik henti sementara yang berbeda, tetapi karena kami menggunakan persentase untuk memindahkannya, animasi juga akan ikut diskalakan. Menganimasikan properti tata letak seperti Kami tidak hanya terbatas pada unit ini saja — mari kita lihat beberapa kemungkinan lainnya Satuan SVGSalah satu hal yang saya sukai tentang bekerja dengan SVG adalah kita dapat menggunakan unit pengguna SVG untuk animasi yang langsung responsif. Petunjuknya benar-benar ada di namanya — Scalable Vector Graphic. Di tanah SVG, semua elemen diplot pada koordinat tertentu. Ruang SVG seperti selembar kertas grafik yang tak terbatas tempat kita dapat mengatur elemen. ________ 49 _______ menentukan dimensi kertas grafik yang dapat kita lihat
Dalam demo berikutnya, SVG kami 0 unit dan tinggi 1 unit. Ini berarti jika kita menganimasikan elemen sebesar 0 unit di sepanjang sumbu x, elemen tersebut akan selalu bergerak sepanjang lebar SVG induknya, tidak peduli seberapa besar atau kecil SVG itu. Beri demo ukuran untuk dilihatCodePen Embed Fallback Menganimasikan elemen anak berdasarkan lebar penampung induk sedikit rumit di tanah HTML. Hingga saat ini, kami harus mengambil lebar induk dengan JavaScript, yang cukup mudah saat Anda menganimasikan 3 posisi yang diubah, tetapi sedikit fiddlier saat Anda menganimasikan 4 di suatu tempat seperti yang Anda lihat di demo berikut. Jika titik akhir Anda adalah posisi yang diubah dan Anda mengubah ukuran layar, Anda harus menyesuaikan posisi itu secara manual. Berantakan… 🤔CodePen Embed Fallback Jika Anda menyesuaikan nilai pada pengubahan ukuran, ingatlah untuk melakukan debounce, atau bahkan aktifkan fungsi setelah browser selesai mengubah ukuran. Pengubahan ukuran pemroses mengaktifkan banyak peristiwa setiap detik, jadi memperbarui properti pada setiap peristiwa membutuhkan banyak pekerjaan untuk browser Tapi, speed-bump animasi ini akan segera menjadi masa lalu. Drum roll tolong… 🥁
Unit Kontainer. Hal-hal yang indah. Pada saat saya menulis ini, mereka hanya berfungsi di Chrome dan Safari — tetapi mungkin saat Anda membaca ini, kami juga akan memiliki Firefox. Lihat aksi mereka dalam demo berikut ini. Lihat anak-anak kecil itu pergi. Bukankah itu mengasyikkan, animasi yang relatif terhadap elemen induknya CodePen Embed Fallback Data dukungan browser ini berasal dari , yang lebih detail. Angka menunjukkan bahwa browser mendukung fitur tersebut pada versi tersebut dan yang lebih baru DesktopChromeFirefoxIEEdgeSafari105110No10516.0Ponsel / TabletAndroid ChromeAndroid FirefoxAndroidiOS Safari109< . 0No10916.0Transisi tata letak yang lancar dengan FLIPSeperti yang kami sebutkan sebelumnya, di SVG-land setiap elemen ditempatkan dengan rapi di satu grid dan sangat mudah untuk bergerak secara responsif. Di HTML-land jauh lebih kompleks. Untuk membangun tata letak yang responsif, kami menggunakan banyak metode pemosisian dan sistem tata letak yang berbeda. Salah satu kesulitan utama menganimasikan di web adalah banyak perubahan tata letak yang tidak mungkin dianimasikan. Mungkin sebuah elemen perlu dipindahkan dari posisi _5 ke 6, atau beberapa turunan dari wadah fleksibel perlu diacak dengan mulus di sekitar viewport. Mungkin sebuah elemen bahkan perlu diasuh ulang dan dipindahkan ke posisi yang sama sekali baru di DOMRumit, ya? Sehat. Teknik FLIP hadir untuk menyelamatkan hari; . Premis dasarnya adalah
Ini demo menggunakan plugin FLIP GSAP yang melakukan semua pekerjaan berat untuk Anda CodePen Embed Fallback Jika Anda ingin memahami lebih banyak tentang implementasi vanilla, kunjungi posting blog Paul Lewis — dia adalah otak di balik teknik FLIP Menskalakan SVG dengan lancarAnda mengerti saya… ini sebenarnya bukan tip animasi. Tetapi mengatur panggung dengan benar sangat penting untuk animasi yang bagus. Skala SVG sangat baik secara default, tetapi kita dapat mengontrol bagaimana skalanya lebih jauh dengan 7, yang sangat berguna saat rasio aspek elemen SVG dan rasio aspek viewBox berbeda. Ini bekerja dengan cara yang sama seperti properti 9 dan 0 di CSS. Deklarasi terdiri dari nilai penyelarasan ( 9) dan referensi Meet atau Slice ( 0)Untuk referensi Meet and Slice — 3 seperti 4, dan 5 seperti 6
CodePen Embed Fallback Tom Miller mengambil langkah lebih jauh dengan menggunakan 0 di CSS dan elemen yang mengandung untuk mengungkapkan "tahap kiri" dan "tahap kanan" sambil menjaga ketinggian dibatasi
CodePen Embed Fallback Kanvas penskalaan yang lancarKanvas jauh lebih berkinerja untuk animasi kompleks dengan banyak bagian bergerak daripada menganimasikan SVG atau HTML DOM, tetapi secara inheren juga lebih kompleks. Anda harus bekerja untuk pencapaian kinerja tersebut. Tidak seperti SVG yang memiliki unit responsif yang bagus dan penskalaan di luar kotak, 2 harus diatur dan dikelola mikro sedikitSaya suka mengatur _2 saya sehingga bekerja dengan cara yang sama seperti SVG (saya mungkin bias) dengan sistem unit yang bagus untuk bekerja di dalamnya dan rasio aspek tetap. _2 juga perlu digambar ulang setiap kali sesuatu berubah, jadi ingatlah untuk menunda menggambar ulang hingga browser selesai mengubah ukuran, atau melakukan debounceCodePen Embed Fallback George Francis juga mengumpulkan perpustakaan kecil yang indah ini yang memungkinkan Anda untuk mendefinisikan atribut Canvas 7 — persis seperti SVGAnimasi yang ditargetkanTerkadang Anda mungkin perlu mengambil pendekatan yang kurang lancar dan lebih terarah untuk animasi Anda. Perangkat seluler memiliki real estat yang jauh lebih sedikit, dan kinerja jus animasi yang lebih sedikit daripada mesin desktop. Jadi masuk akal untuk menyajikan pengurangan animasi kepada pengguna seluler, bahkan berpotensi tanpa animasi
Untuk melakukannya, kita dapat menggunakan kueri media untuk menargetkan ukuran viewport tertentu seperti yang kita lakukan saat menata gaya dengan CSS. Berikut demo sederhana yang menunjukkan animasi CSS ditangani menggunakan kueri media dan animasi GSAP ditangani dengan 7CodePen Embed Fallback Kesederhanaan demo ini menyembunyikan banyak keajaiban. Animasi JavaScript memerlukan lebih banyak penyiapan dan pembersihan agar dapat bekerja dengan benar hanya pada satu ukuran layar tertentu. Saya telah melihat kengerian di masa lalu di mana orang baru saja menyembunyikan animasi dari tampilan di CSS dengan 8, tetapi animasi masih berjalan di latar belakang menggunakan sumber daya. 😱Jika ukuran layar tidak cocok lagi, animasi harus dimatikan dan dirilis untuk pengumpulan sampah, dan elemen yang terpengaruh oleh animasi harus dibersihkan dari gaya inline yang diperkenalkan oleh gerakan untuk mencegah konflik dengan gaya lainnya. Hingga _7, ini adalah proses yang rumit. Kami harus melacak setiap animasi dan mengelola semua ini secara manual _7 memungkinkan Anda memasukkan kode animasi dengan mudah ke dalam fungsi yang hanya dijalankan saat kueri media tertentu cocok. Kemudian, ketika tidak cocok lagi, semua animasi GSAP dan ScrollTriggers dalam fungsi tersebut dikembalikan secara otomatis. Permintaan media tempat animasi muncul melakukan semua kerja keras untuk Anda. Ada di GSAP 3. 11. 0 dan ini adalah pengubah permainanKami juga tidak terbatas pada ukuran layar. Ada banyak fitur media di luar sana untuk dihubungkan _Dalam demo berikut kami telah menambahkan tanda centang untuk 1 sehingga setiap pengguna yang menemukan animasi disorientasi tidak akan terganggu oleh hal-hal yang berputar-putarCodePen Embed Fallback Dan lihat demo menyenangkan Tom Miller lainnya di mana dia menggunakan rasio aspek perangkat untuk menyesuaikan animasi CodePen Embed Fallback Berpikir di luar kotak, di luar ukuran layarAda lebih banyak pemikiran tentang animasi responsif daripada sekadar ukuran layar. Perangkat yang berbeda memungkinkan interaksi yang berbeda, dan mudah untuk menjadi sedikit kusut saat Anda tidak mempertimbangkannya. Jika Anda membuat status arahkan kursor di CSS, Anda dapat menggunakan fitur media 2 untuk menguji apakah mekanisme input utama pengguna dapat mengarahkan kursor ke elemen
Beberapa saran dari Jake Whiteley
Saya kemudian akan mengawinkan kueri tata letak CSS dan kueri JavaScript saya, jadi saya mempertimbangkan perangkat input sebagai faktor utama yang didukung oleh lebar, bukan sebaliknya Tip ScrollTriggerJika Anda menggunakan plugin ScrollTrigger GSAP, ada utilitas kecil praktis yang dapat Anda gunakan untuk membedakan kemampuan sentuh perangkat dengan mudah. 3
Kiat lain untuk animasi yang dipicu oleh scroll yang responsif… Demo berikut di bawah ini memindahkan galeri gambar secara horizontal, tetapi lebarnya berubah tergantung ukuran layar. Jika Anda mengubah ukuran layar saat Anda setengah jalan melalui animasi scrub, Anda dapat berakhir dengan animasi yang rusak dan nilai basi. Ini adalah speedbump umum, tapi yang mudah dipecahkan. Pop perhitungan yang bergantung pada ukuran layar menjadi nilai fungsional dan atur 7. Dengan begitu, ScrollTrigger akan menghitung ulang nilai tersebut untuk Anda saat browser mengubah ukuranCodePen Embed Fallback Tip kutu buku bonus GSAPDi perangkat seluler, bilah alamat browser biasanya ditampilkan dan disembunyikan saat Anda menggulir. Ini dianggap sebagai acara pengubahan ukuran dan akan mengaktifkan 8. Ini mungkin tidak ideal karena dapat menyebabkan lompatan dalam animasi Anda. GSAP 3. 10 ditambahkan _9. Ini tidak memengaruhi perilaku bilah browser, tetapi mencegah 8 diaktifkan untuk pengubahan ukuran vertikal kecil pada perangkat khusus sentuh
Prinsip gerakSaya pikir saya akan memberi Anda beberapa praktik terbaik untuk dipertimbangkan saat bekerja dengan motion di web Jarak dan pelonggaranHal kecil tapi penting yang mudah dilupakan dengan animasi responsif adalah hubungan antara kecepatan, momentum, dan jarak. Animasi yang bagus harus meniru dunia nyata agar terasa dapat dipercaya, dan butuh waktu lebih lama di dunia nyata untuk menempuh jarak yang lebih jauh. Perhatikan jarak tempuh animasi Anda, dan pastikan durasi dan easing yang digunakan sesuai konteks dengan animasi lainnya Anda juga sering dapat menerapkan easing yang lebih dramatis pada elemen dengan melakukan perjalanan lebih jauh untuk menunjukkan peningkatan momentum CodePen Embed Fallback Untuk kasus penggunaan tertentu, sebaiknya sesuaikan durasi secara lebih dinamis berdasarkan lebar layar. Dalam demo berikutnya kami menggunakan 1 untuk menjepit nilai yang kami dapatkan dari 2 saat ini ke dalam rentang yang masuk akal, lalu kami memetakan angka tersebut ke durasiCodePen Embed Fallback Spasi dan kuantitasHal lain yang perlu diingat adalah jarak dan jumlah elemen pada ukuran layar yang berbeda. Mengutip Steven Shaw
Saya suka bagaimana Opher Vishnia berpikir tentang animasi sebagai sebuah panggung. Menambahkan dan menghapus elemen tidak hanya formalitas, itu bisa menjadi bagian dari keseluruhan koreografi
CodePen Embed Fallback Dan itu banyak. Jika Anda memiliki tip animasi yang lebih responsif, masukkan di bagian komentar. Jika ada sesuatu yang sangat membantu, saya akan menambahkannya ke ringkasan informasi ini TambahanSatu catatan lagi dari Tom Miller saat saya menyiapkan artikel ini
Saya pikir kita semua menghargai bahwa tip untuk "merencanakan ke depan" ini datang pada menit terakhir. Terima kasih, Tom, dan semoga sukses dengan retrofit tersebut Bagaimana cara mengaktifkan animasi gulir?Beginilah cara kami membuat acara yang dipicu oleh gulir . Buat fungsi bernama scrollTrigger yang bisa kita terapkan pada elemen tertentu Terapkan sebuah. kelas aktif pada elemen saat memasuki viewport Animasikan itu. kelas aktif dengan CSS Bagaimana cara memindahkan gambar melintasi layar dalam HTML?Anda dapat dengan mudah memindahkan gambar dalam HTML menggunakan tag . Ini digunakan untuk membuat gambar bergulir baik dari kiri ke kanan secara horizontal atau dari kanan ke kiri, atau secara vertikal dari atas ke bawah atau dari bawah ke atas. Secara default, gambar yang ditemukan di dalam tag
Bagaimana cara menggunakan animasi CSS pada scroll?Memicu animasi CSS pada scroll adalah jenis animasi yang dipicu scroll. . Gunakan Intersection Observer API Ukur offset elemen saat pengguna menggulir Gunakan pustaka JavaScript pihak ketiga yang mengimplementasikan #1 atau #2 |