Dalam CSS, peralihan menyediakan cara yang elegan untuk menghidupkan perubahan sifat dengan lancar dari semasa ke semasa. Walau bagaimanapun, situasi tertentu boleh timbul apabila peralihan gagal dilaksanakan atau panggilan balik yang berkaitan kekal tidak dipanggil.
Satu senario sedemikian berlaku apabila menetapkan nilai lokasi baharu kepada elemen peluru semasa pembangunan permainan. Walaupun telah menggantikan panggilan jQuery dengan JS tulen, peralihan itu nampaknya dilangkau sepenuhnya dan tiada panggilan balik dicetuskan.
Misteri Peralihan yang Hilang
Anehnya, pembungkusan kedudukan CSS berubah dalam 1ms setTimeout entah bagaimana membetulkan isu itu, walaupun kadangkala peralihan masih akan memintas. Ketidakkonsistenan ini menimbulkan persoalan: mengapa setTimeout membantu, dan mengapa panggilan balik kadangkala gagal?
Peranan Gaya Dikira
Kunci untuk memahami tingkah laku ini terletak dalam gaya pengiraan CSS. Apabila anda menetapkan gaya baharu melalui JavaScript, penyemak imbas mungkin tidak menggunakannya dengan serta-merta. Sebaliknya, gaya pengiraan elemen kekal tidak berubah, membawa kepada percanggahan antara gaya sebaris dan nilai yang dikira.
Dalam kes elemen peluru, walaupun gaya sebaris menyatakan nilai kiri dan atas, nilai yang dikira gaya pada mulanya mengekalkan nilai lalai 0px.
Kesan pada Peralihan
Peralihan bergantung pada gaya yang dikira untuk menentukan keadaan permulaan dan penamat animasi. Apabila gaya pengiraan awal berbeza daripada gaya sebaris yang anda cuba alihkan, peralihan pada dasarnya tidak mempunyai kesan dan nampaknya melangkau.
Penyelesaian: Memaksa Aliran Semula
Untuk menyelesaikan isu ini dan memastikan peralihan sentiasa dilaksanakan dengan betul, anda perlu memaksa penyemak imbas untuk melakukan aliran semula, yang mengira semula gaya yang dikira.
Satu cara untuk mencapai ini ialah dengan mengakses sifat yang memerlukan gaya terkini, seperti offsetHeight. Dalam kod yang disediakan, animdiv.offsetHeight mencetuskan aliran semula sebelum nilai kiri dan atas baharu diberikan.
Kesimpulan
Dengan memahami isu dengan gaya pengiraan, anda boleh pastikan peralihan CSS beroperasi seperti yang dijangkakan dan panggilan balik dipanggil dengan pasti. Ingat untuk memaksa aliran semula sebelum mengalihkan elemen jika anda melihat tingkah laku yang tidak teratur.
Atas ialah kandungan terperinci Mengapakah Peralihan CSS Kadangkala Melangkau atau Gagal Mencetuskan Panggilan Balik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!