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

Mengapa Peralihan CSS Saya Tidak Berfungsi pada Elemen Tersembunyi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-15 06:29:02216semak imbas

Why Doesn't My CSS Transition Work on Hidden Elements?

Peralihan CSS Tidak Berfungsi Pada Mulanya pada Elemen Tersembunyi

Apabila cuba menghidupkan sifat elemen tersembunyi menggunakan peralihan CSS, anda mungkin menghadapi isu di mana elemen dipaparkan serta-merta pada kedudukan terakhirnya. Ini disebabkan oleh hubungan antara Model Objek CSS (CSSOM) dan Model Objek Dokumen (DOM).

Peranan Reflow dan CSSOM

Peralihan CSS menentukan keadaan awalnya berdasarkan gaya pengiraan sesuatu elemen. Walau bagaimanapun, apabila elemen mempunyai paparan: tiada, penyemak imbas mengabaikan gaya pengiraannya kerana elemen itu tidak dapat dilihat dengan berkesan oleh CSSOM.

Dalam senario anda, apabila anda mencetuskan peralihan pada .b, ia tidak mempunyai gaya pengiraan , kerana ia tersembunyi. Oleh itu, peralihan tidak boleh dimulakan dengan betul.

Memaksa Aliran Semula

Untuk menyelesaikan isu ini, anda boleh memaksa penyemak imbas mengemas kini gaya pengiraan elemen tersembunyi sebelum memulakan peralihan itu. Ini dilakukan dengan mencetuskan aliran semula.

Aliran semula ialah proses di mana penyemak imbas mengira semula reka letak dan gaya pengiraan keseluruhan halaman. Ini boleh dicetuskan oleh kaedah DOM tertentu atau oleh penyemak imbas itu sendiri apabila perlu, seperti apabila skrin dimuat semula.

Menggunakan API requestAnimationFrame(), anda boleh meminta penyemak imbas untuk melakukan aliran semula sejurus sebelum cat seterusnya operasi berlaku. Ini memastikan bahawa gaya pengiraan elemen anda adalah terkini apabila peralihan bermula.

Kod Kemas Kini

$('button').on('click', function () {
  $('.b').show(); // Apply display:block synchronously

  requestAnimationFrame(() => {
    // Force a reflow
    document.body.offsetHeight;

    // Trigger the transitions
    $('.b').css('right', '80%');
    $('.a').css('right', '80%');
  });
})

Atas ialah kandungan terperinci Mengapa Peralihan CSS Saya Tidak Berfungsi pada Elemen Tersembunyi?. 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