Rumah >hujung hadapan web >tutorial css >Mengapa Peralihan CSS Tidak Berfungsi pada Elemen Tersembunyi Pada Mulanya?

Mengapa Peralihan CSS Tidak Berfungsi pada Elemen Tersembunyi Pada Mulanya?

Linda Hamilton
Linda Hamiltonasal
2024-11-15 15:11:02474semak imbas

Why Don't CSS Transitions Work on Initially Hidden Elements?

Peralihan CSS Tidak Berfungsi pada Elemen Tersembunyi Pada Mulanya

Memahami Isu

Dalam senario yang diterangkan, terdapat dua div , satu daripadanya pada mulanya disembunyikan menggunakan display:none. Apabila div tersembunyi didedahkan menggunakan kaedah seperti show() atau toggle(), peralihan sifatnya tidak berlaku dengan lancar. Sebaliknya, div muncul serta-merta pada kedudukan akhir yang diingini.

Punca Tingkah Laku

Untuk memahami tingkah laku ini, kita perlu menyelidiki hubungan antara CSSOM ( Model Objek CSS) dan DOM (Model Objek Dokumen).

Peralihan CSS bergantung pada mengetahui permulaan elemen nilai gaya dikira untuk menentukan titik permulaan peralihan. Walau bagaimanapun, elemen dengan display:none tidak mempunyai nilai gaya yang dikira kerana ia tidak dianggap boleh dilihat dalam CSSOM.

Pengaruh Reflow

Reflow ialah operasi penyemak imbas yang mengira semula susun atur dokumen berdasarkan perubahan pada DOM atau peraturan gaya. Apabila display:none dialih keluar, penyemak imbas memulakan aliran semula untuk mengemas kini DOM dan nilai gaya yang dikira.

Dalam senario yang diberikan, jika peralihan bermula sebelum aliran semula berlaku, nilai gaya pengiraan awal untuk div tersembunyi akan menjadi tidak sah, membawa kepada kemunculan mendadak.

Menyelesaikan Isu

Pilihan 1: Menggunakan $.animate()

$.animate() mencetuskan aliran semula sebelum melaksanakan animasi, memastikan bahawa nilai gaya yang dikira adalah terkini.

Pilihan 2: Memaksa secara manual Reflow

Menggunakan requestAnimationFrame() membolehkan kami menjadualkan pelaksanaan kod sebelum operasi cat seterusnya. Di dalam panggilan balik, kita boleh memaksa aliran semula menggunakan kaedah seperti document.body.offsetHeight, dan kemudian segera mencetuskan peralihan dengan menetapkan nilai sifat CSS yang dikehendaki.

Kesimpulan

Kemunculan mendadak elemen yang pada mulanya tersembunyi semasa peralihan CSS adalah disebabkan oleh kekurangan nilai gaya pengiraan yang sah. Dengan memahami proses pengaliran semula dan menggunakan teknik untuk memaksa pengaliran semula, kami boleh memastikan peralihan lancar untuk elemen yang pada mulanya tersembunyi.

Atas ialah kandungan terperinci Mengapa Peralihan CSS Tidak Berfungsi pada Elemen Tersembunyi Pada Mulanya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn