Masalah Aliran Semula Penyemak Imbas dalam Peralihan CSS
Apabila peralihan elemen DOM menggunakan CSS3, selalunya perlu memaksa aliran semula penyemak imbas untuk mencetuskan animasi. Dalam kes di mana pengubahsuaian berbilang sifat CSS dalam turutan mengakibatkan tingkah laku yang tidak dijangka, penyemak imbas mungkin mengoptimumkan perubahan, yang membawa kepada ketiadaan animasi.
Untuk menyelesaikan isu ini, adalah penting untuk memahami konsep aliran semula. Aliran semula berlaku apabila penyemak imbas mengira semula reka letak bahagian pepohon dokumen, yang dicetuskan oleh perubahan pada saiz atau kedudukan elemen peringkat blok.
Satu teknik untuk memaksa aliran semula melibatkan mengakses sifat offsetHeight bagi elemen selepas mengubah suai gayanya. Ini boleh dicapai melalui fungsi berikut:
function reflow(elt){ console.log(elt.offsetHeight); }
Dengan memanggil fungsi ini selepas mengemas kini CSS elemen, aliran semula boleh dicetuskan, membenarkan peralihan berkuat kuasa. Berikut ialah contoh kod yang diubah suai daripada soalan yang menggunakan teknik ini:
ul.style.transition = 'none 0s linear 0s'; ul.style.left = '-600px'; reflow(ul); ul.style.transition = 'all 0.2s ease-out'; ul.style.left = '0px';
Pilihan lain ialah menggunakan operator void(), yang menghalang pengoptimum daripada melangkau akses harta:
void(elt.offsetHeight);
Teknik ini berkesan kerana void adalah operator unary yang menilai ungkapan dan kemudian membuang hasilnya, memastikan bahawa sebarang kesan sampingan daripada mengakses harta itu adalah dilaksanakan.
Atas ialah kandungan terperinci Cara Memaksa Aliran Semula Penyemak Imbas untuk Peralihan CSS: Panduan untuk Animasi Berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!