Stack Overflow merayakan pencapaian situs dengan confetti di banyak tempat. Itu berarti sudah waktunya untuk memformalkannya dalam sistem desain kami Show Aaron Shekey Desainer Produk Utama, Sistem Desain Cukup sering di produk kami, kami akan memiliki popover atau modals perayaan. Selamat. Anda melakukan hal itu. Kerja yang baik. Anda mendapatkan fiturnya. Hore Di Tumpukan sistem desain kami, kami baru-baru ini mengirimkan cara portabel yang dapat digunakan kembali untuk menampilkan confetti perayaan Pertama kali kami perlu menunjukkan beberapa confetti, kami hanya menyertakan SVG confetti yang dirender secara statis di latar belakang, melakukan yang terbaik untuk memposisikannya keluar dari teks, dan melanjutkan hidup kami. Itu terlihat seperti ini Hanya beberapa bulan kemudian, kami menemukan pendekatan yang sama ini dilakukan 12 kali di seluruh produk kami. Setiap iterasi sedikit berbeda. Segera kami memiliki variasi lain seperti Kita harus konsisten dalam pendekatan kita terhadap confetti yang dapat digunakan kembali, portabel, dan mungkin yang paling penting, didokumentasikan. Waktu untuk meresmikan Seni sebelumnyaSeperti yang diketahui oleh banyak pengguna Stack Overflow, cara terbaik untuk memulai adalah membuat contoh yang baik. Untungnya, ada banyak contoh confetti dalam produk di internet. Aplikasi seperti Bamboo menggunakannya untuk peringatan dan ulang tahun. Carta menggunakan confetti untuk merayakan opsi berolahraga Beberapa merender sesuatu dalam JavaScript, yang lain sebagai gif animasi. Ada beberapa yang merender seluruh adegan WebGL dalam Tiga. JS Untuk Stack Overflow, kami membutuhkan sesuatu yang seportabel mungkin dan berjalan sedekat mungkin dengan HTML & CSS asli. Kami tidak ingin memperkenalkan dependensi apa pun di sini. Kami juga tidak ingin menginisialisasi beberapa JS setiap kali kami ingin menampilkannya. Mengandalkan ketergantungan ekstra mendiskualifikasi pendekatan yang kami lihat di seluruh web Saat mencari solusi untuk masalah umum, seringkali saya akan mulai dari Codepen. Ini membawa saya ke Pena Andy O'Brien Pendekatan ini sederhana dan elegan, dan animasi berputar. Ini menggunakan CSS yang dihasilkan Sass untuk menganimasikan elemen DOM individual. Itu juga terlihat sangat dekat dengan iterasi terbaru desainer kami Vivian Zhang tentang estetika confetti Saya menggunakan Codepen untuk mulai memahami pendekatannya. Saya men-tweak warna dan mulai mengotak-atik variabel waktu. Begitu saya memahami pendekatannya, saya menyelesaikan warna, dan menempatkan elemen confetti di dalam salah satu modals kami Tetapi pendekatan ini memiliki beberapa masalah. Dalam berbagai konteks kami, kami tidak memiliki komponenisasi pada skala yang kami inginkan. Ini berarti teknisi kami harus menyalin dan menempelkan selusin div Kami yakin menyukai estetika Saya bertaruh alih-alih mengirimkan sebagai elemen DOM, kami dapat menempatkan semua ini di dalam SVG dan mengirimkannya sebagai gambar latar belakang, memberi kami kontrol yang jauh lebih besar atas pemosisian, ukuran, dan pengulangan Penulisan SVGOke, jadi SVG sebagai gambar latar belakang? . Pertama, saya harus membuat elemen SVG untuk menampung potongan confetti. Ini hanya masalah mendistribusikan beberapa persegi panjang di atas kanvas dan memilih beberapa ukuran yang kita suka. Ini hanya menggantikan DOM kami yang kami jelajahi di Codepens sebelumnya untuk portabilitas. Saya menggunakan Figma untuk menggambar ini sebagai penghemat waktu, tetapi ini semua bisa ditulis dengan tangan. Inilah hasil akhirnya
Sekarang setelah saya memiliki elemen SVG, saya dapat menyematkan CSS ke dalamnya dan browser akan melakukan tugasnya. Pendekatan asli Andy adalah mewarnai, memutar, dan memposisikan berbagai elemen confetti menggunakan pemilih 0 CSS. Awalnya, SVG saya terstruktur seperti itu _Oh. Tapi sekarang pemilih 0 CSS semuanya dimatikan satu karena CSS menghitung elemen 2 sebagai anak. Saya kira kita akan memindahkannya ke bawahSelain itu, fungsi Sass tidak akan berfungsi di dalam SVG kita, jadi kita harus mengompilasi sebagai CSS dan menempelkannya ke dalam SVG kita. Codepen dapat menangani kompilasi untuk kami, dan saya dapat menyalin dan menempel. Ini menjadi sedikit aneh. 😛
Oke, liar. Jadi jika Anda menyimpan ini sebagai SVG dan membukanya di browser Anda, sekarang Anda akan melihat beberapa confetti animasi, tetapi ada yang salah dengan penempatan potongan confetti kami. Saat ini adalah elemen DOM, mereka baru saja berfungsi. Sesuatu pasti berbeda tentang SVG. Jika Anda menebak bahwa SVG memiliki asal transformasi yang berbeda, Anda benar. Di DOM, jika Anda memutar sesuatu dengan CSS, itu hanya berputar secara default di tengah elemen. Di SVG asal defaultnya adalah 0,0, artinya paling kiri atas kanvas kita 🤦♂️ Saya memecahkan ini dengan mengukur jarak di Figma dan meng-hardcoding beberapa asal transformasi, mis. g. 3 Asal-usul ini bukan pusat persegi panjang yang sempurna, tetapi cukup dekat
Hanya satu kemahiran terakhir. Karena asal-usulnya sedikit berbeda di SVG, saya perhatikan bahwa di bagian bawah, ada beberapa potongan confetti yang terpotong di akhir animasinya. Kita bisa menyelesaikan ini dengan menggerakkan karya kita ke atas dan ke luar kanvas _PengirimanBesar. Kami memiliki satu file SVG yang sekarang menangani semua animasi, dan sekarang kami menempatkannya sebagai gambar latar belakang pada elemen apa pun yang kami inginkan. Kami juga menyukai pengaturan waktu, warna, dan ukuran animasi kami Kami dapat berhenti di sini dan memastikan bahwa setiap proyek memiliki file 4 ini di suatu tempat di sistem file…ATAU kami dapat merangkum lebih jauh dengan menyandikan seluruh SVG ini (dengan CSS) dalam file CSS sistem desain kami. CSS di SVG di CSS? Ini sesederhana menyandikan SVG sebagai gambar latar belakang
Saya menggunakan alat yoksel setiap kali saya harus menyandikan sesuatu seperti ini Mendukung gerakan yang berkurangBeberapa orang mengalami kesulitan dengan animasi. Yang lain lebih suka tidak melihatnya sama sekali. Untungnya, browser kami menawarkan kueri media untuk 5 ini. Mari kita gunakan untuk menunjukkan sedikit confetti yang dirender secara statis, yang sebenarnya merupakan pendekatan ad-hoc organik asli yang kami ambilVivian cukup baik untuk membuat versi statis dari confetti di Figma Sekarang tinggal menyematkan versi statis di balik kueri media tersebut
Kami juga dapat menyediakan ini sebagai kelas terpisah dengan 6
Itu membungkusnya. Sekarang teknisi dan desainer kami memiliki satu kelas portabel 7 yang dapat mereka tambahkan ke elemen level blok apa pun. Anda dapat melihat dokumentasi lebih lanjut tentang sistem desain kami, , dan bagaimana kami mengembangkannyaItu dia. CSS di SVG di confetti CSS. 🎉 Tidak ada dependensi tambahan, dan semuanya dibundel dalam CSS kami Bagaimana cara menyingkirkan sumber pemblokiran render di CSS?9 trik untuk menghilangkan sumber daya pemblokiran render . Identifikasi sumber daya pemblokiran render Anda Jangan tambahkan CSS dengan aturan @import Gunakan atribut media untuk CSS bersyarat Tunda CSS yang tidak kritis Gunakan atribut defer dan async untuk menghilangkan JavaScript yang memblokir render Temukan dan hapus CSS dan JavaScript yang tidak digunakan Bagaimana cara saya menyingkirkan plugin pemblokiran Render?Untuk mengurangi jumlah skrip yang memblokir perenderan di situs Anda, Anda harus mengikuti beberapa praktik terbaik. . 'Perkecil' JavaScript dan CSS Anda. Ini berarti menghapus semua spasi ekstra dan komentar yang tidak perlu dalam kode Gabungkan JavaScript dan CSS Anda. . Tunda pemuatan JavaScript Mengapa pemblokiran render CSS?Secara default, CSS diperlakukan sebagai sumber pemblokiran render, yang berarti bahwa browser tidak akan merender konten yang diproses hingga CSSOM dibuat. Make sure to keep your CSS lean, deliver it as quickly as possible, and use media types and queries to unblock rendering.
Bagaimana cara menghilangkan sumber pemblokiran render di WordPress tanpa plugin?Cara menghilangkan sumber daya pemblokiran render di WordPress . Optimalkan pemuatan CSS. Salah satu cara untuk menghilangkan sumber daya yang memblokir perenderan adalah dengan mengoptimalkan pemuatan CSS situs web Anda. . Tunda JavaScript yang tidak penting. . Tunda gambar di luar layar. . Hapus JavaScript yang memblokir render secara manual. . Terapkan atribut async atau defer dengan plugin |