Artikel ini dikutip dari buku "The Master of CSS" yang ditulis oleh Tiffany Brown. Buku ini boleh didapati di kedai buku utama di seluruh dunia, dan anda juga boleh membeli versi e-book di sini.
mengecat semula (mengecat) adalah sama dengan mengecat semula, dan memaksa pelayar untuk membuat semula sebahagian dokumen. Sebagai contoh, menukar warna tetikus apabila melayang di atas butang adalah operasi redraw. Redraw mempunyai kesan yang kurang pada penyusunan semula kerana ia tidak menjejaskan saiz atau kedudukan nod;
Penyusunan semula dan redrawing biasanya dicetuskan oleh operasi DOM, seperti menambah atau mengeluarkan elemen. Tetapi mereka juga boleh disebabkan oleh perubahan atribut yang mempengaruhi saiz unsur, penglihatan, atau kedudukan. Ini benar sama ada perubahan itu disebabkan oleh JavaScript atau animasi berasaskan CSS.
nota: Page Loading {.title}
Sukar untuk mengelakkan penyisihan semula dan penyusunan semula dalam projek. Walau bagaimanapun, kita boleh menggunakan alat garis masa untuk mengenal pasti mereka dan mengurangkan kesannya.
alat garis masa {.title}
Untuk menggunakan garis masa, klik tab Timeline dalam antara muka Alat Pemaju. Dalam Chrome, Opera, dan Firefox, ia bernama "garis masa" yang tepat. Safari menamakannya bentuk plural "garis masa". Internet Explorer 11 menggunakan nama yang lebih deskriptif "respons UI".
[9]
Dalam mana -mana penyemak imbas, tekan butang "Rekod" untuk memulakan proses rakaman. Berinteraksi dengan bahagian halaman yang mempunyai masalah, dan apabila selesai, klik butang yang sepadan untuk menghentikan rakaman.Bergantung pada penyemak imbas yang anda gunakan, anda boleh melihat data dengan segera, atau selepas menghentikan rakaman. Data paparan Safari dan Firefox dalam masa nyata, manakala Chrome, Opera, dan Internet Explorer membuat carta prestasi selepas anda berhenti merakam.
Memuatkan dokumen, panggilan fungsi, peristiwa DOM, pengiraan semula gaya, dan operasi lukisan semuanya direkodkan dalam setiap penyemak imbas, yang membolehkan kami menggariskan kesesakan prestasi. Bagi prestasi CSS, kita perlu memberi tumpuan kepada sekurang -kurangnya dua aspek yang berkaitan:
Untuk memahami keadaan sebenar, kami akan membandingkan dua dokumen asas, contoh A dan Contoh B. Dalam kedua -dua kes, kita memindahkan satu siri elemen div {.literal} dari kedudukan x 0 hingga x kedudukan 1000. Kedua -dua contoh menggunakan penukaran CSS. Walau bagaimanapun, dalam contoh A, kita akan menghidupkan atribut left
. Dalam Contoh B, kami akan menggunakan transformasi transformasi dan menghidupkan atribut transform
.
Tanda kedua -dua contoh adalah sama (hasilnya ditunjukkan dalam Rajah 3.16):
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8"> <title>Performance example</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <button type="button" id="move">Move</button> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <🎜> </body> </html>
moved
var move = document.getElementById('move'); move.addEventListener('click', function(e) { var objs = document.body.querySelectorAll('div'); Array.prototype.forEach.call(objs, function(o){ o.classList.toggle('moved'); }); });
Selepas
div { background: #36f; margin-bottom: 1em; width: 30px; height: 30px; position: relative; left: 0; transition: left 2s ease-in; } .moved { left: 1000px; }
Rajah 3.17. Output garis masa penukaran kedudukan kiri di Internet Explorer 11 Pelayar
Rajah 3.20.
left
. left
-webkit-transform
Rajah 3.23. kod yang akan dikeluarkan {.title}
transform
Malangnya, tidak ada senarai yang jelas tentang sifat -sifat yang akan menyebabkan penyusunan semula dan redrawing. Pencetus CSS Paul Lewis adalah yang paling dekat, tetapi ia adalah khusus krom. Walau bagaimanapun, penyemak imbas juga berkelakuan sama untuk kebanyakan sifat ini, jadi sumber ini sekurang -kurangnya memberi anda idea yang mana sifat boleh menyebabkan masalah. Sebaik sahaja anda tahu sifat mana
transform
Atas ialah kandungan terperinci Debugging CSS untuk respons UI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!