Rumah >hujung hadapan web >tutorial js >js untuk menghalang susun atur DIV daripada berkelip apabila kemahiran menatal_javascript
Contoh dalam artikel ini menerangkan kaedah js untuk menghalang reka letak DIV daripada berkelip apabila menatal, dan saya ingin berkongsi dengan anda untuk rujukan anda. Kaedah khusus adalah seperti berikut:
Perkara yang saya telah didedahkan baru-baru ini tentang prestasi halaman termasuk banyak kandungan halus dan asli, seperti pemaparan penyemak imbas. Terdapat banyak maklumat, jadi saya memilih beberapa untuk petikan dan memo.
Apabila JavaScript menulis dan membaca DOM beberapa kali, "layout thrashing" akan berlaku, menyebabkan pengaliran semula dokumen (reflow – proses membina pepohon render
Apabila DOM ditulis, reka letak tidak sah dan perlu disusun semula pada masa tertentu. Tetapi pelayar sangat malas, ia mahu menunggu sehingga penghujung operasi semasa (atau bingkai) sebelum mengalir semula.
Walau bagaimanapun, jika kita membaca nilai geometri dari DOM sebelum penghujung operasi semasa (atau bingkai), maka kita akan memaksa pelayar untuk menyusun semula susun atur terlebih dahulu Ini adalah apa yang dipanggil "susun atur segerak paksa", yang akan Ia membunuh prestasi.
Pada penyemak imbas desktop moden, kesan sampingan meronta-ronta reka letak mungkin tidak jelas, tetapi pada peranti mudah alih rendah, masalahnya adalah serius.
Penyelesaian pantas
Dalam dunia yang ideal, kita boleh membaca DOM dan menulis DOM dalam kelompok dengan hanya menyusun semula susunan pelaksanaan kod. Ini bermakna dokumen itu hanya perlu dialirkan semula sekali.
Bagaimana dengan dunia sebenar?
Sebenarnya ia tidak semudah itu. Dalam program besar, kod tersebar di mana-mana, dan DOM berbahaya ini wujud di mana-mana. Kami tidak boleh dengan mudah (dan jelas sekali tidak) menguli kod kami yang cantik dan dipisahkan bersama hanya untuk mengawal susunan pelaksanaan. Jadi untuk mengoptimumkan prestasi, bagaimana kita membatch membaca dan menulis?
Memenuhi permintaanAnimationFrame
window.requestAnimationFrame menjadualkan fungsi untuk dilaksanakan dalam bingkai seterusnya, serupa dengan setTimout(fn, 0). Ini sangat berguna kerana kita boleh menggunakannya untuk menjadualkan semua operasi tulis DOM untuk dilaksanakan bersama dalam bingkai seterusnya dan operasi baca DOM untuk dilaksanakan serentak dalam susunan semasa.
Saya harap artikel ini akan membantu pengaturcaraan web semua orang berdasarkan JavaScript.