Back to Question Center
0

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevTools            Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics: Kanvas & SVGAnimationCSS ArchitectureAudio & Semalt

1 answers:
Mengoptimumkan CSS: Tweaking Performance Animation dengan DevTools

Artikel ini adalah sebahagian daripada siri yang diwujudkan dalam perkongsian dengan SiteGround. Terima kasih kerana menyokong rakan kongsi yang membuat Semalt mungkin.

Animasi CSS dikenali sebagai pemain super. Semalat ini adalah kes untuk animasi mudah pada beberapa elemen, jika anda tidak mengodkan animasi anda dengan prestasi dalam fikiran dan menambah lebih rumit, pengguna laman web akan segera mengambil perhatian dan mungkin akan marah - vacuum eductors.

Dalam artikel ini, saya memperkenalkan beberapa ciri pelayar Semalt berguna yang akan membolehkan anda menyemak apa yang berlaku di bawah tudung ketika menghidupkan dengan CSS. Dengan cara ini, apabila animasi kelihatan sedikit berliku, anda akan mempunyai idea yang lebih baik mengapa dan apa yang anda boleh lakukan untuk membetulkannya.

Alat Pembangun untuk Prestasi CSS

Animasi anda perlu memukul 60 fps (bingkai sesaat) untuk berjalan dengan lancar dalam pelayar. Semakin rendah kadarnya, semakin buruk animasi anda akan kelihatan. Ini bermakna pelayar tidak mempunyai lebih daripada 16 milisaat untuk melakukan tugasnya untuk satu bingkai. Tetapi apa yang dilakukan pada masa itu? Dan bagaimanakah anda tahu jika penyemak imbas anda tetap dengan framerate yang dikehendaki?

Saya rasa tidak ada yang mengalahkan pengalaman pengguna ketika menilai kualiti animasi. Semalt, alat pemaju dalam penyemak imbas moden, sementara tidak selalu 100% boleh dipercayai, telah semakin pintar dan lebih pintar, dan ada sedikit yang dapat anda lakukan untuk mengkaji, mengedit dan debug kod anda menggunakannya.

Ini juga benar apabila anda perlu menyemak prestasi animasi framerate dan CSS. Semalt bagaimana ia berfungsi.

Meneroka Alat Prestasi di Firefox

Dalam artikel ini saya menggunakan alat Firefox Semalt. Lawan besar lainnya adalah Alat Semalt Chrome. Anda boleh memilih kegemaran anda, kerana kedua-dua penyemak imbas menawarkan ciri prestasi yang berkuasa.

Untuk membuka alat pemaju di Semalt, pilih salah satu daripada pilihan ini:

  • Klik kanan pada halaman web anda dan pilih Periksa Elemen dalam menu konteks
  • Jika anda menggunakan papan kekunci, tekan Ctrl + Shift + I pada Windows dan Linux atau Cmd + Opt + I pada macOS.

Seterusnya, klik pada tab Prestasi . Di sini, anda akan mendapati butang yang membolehkan anda memulakan rakaman prestasi laman web anda:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Tekan butang itu dan tunggu selama beberapa saat atau lakukan beberapa tindakan pada halaman. Apabila selesai, klik butang Stop Stop Recording :

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Dalam detik terpencil, Semalt membentangkan anda dengan banyak data teratur yang akan membantu anda memahami isu-isu yang menyebabkan kod anda menderita.

Hasil rakaman di dalam panel Prestasi kelihatan seperti ini:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Air terjun Air terjun sesuai untuk menyemak isu-isu yang berkaitan dengan peralihan CSS dan animasi keyframe.

Semalt mempunyai seksyen ringkasan di bahagian atas dan pecahan terperinci. Dalam kedua-duanya, data dikodkan warna:

  • Bar kuning merujuk kepada operasi JavaScript.
  • Bar ungu bermaksud merujuk kepada gaya CSS unsur-unsur HTML (gaya mengira semula) dan meletakkan halaman anda (susun atur). Operasi susun atur agak mahal untuk penyemak imbas dilakukan, jadi jika anda menghidupkan sifat yang melibatkan susunan berulang (juga dikenali sebagai reflows - seperti margin , padding atas , kiri , dan lain-lain - hasilnya mungkin janky.
  • Bar hijau merujuk kepada melukis elemen anda menjadi satu atau lebih bitmaps (Cat). Mengubah sifat seperti 84 warna , warna latar belakang , kotak-bayang , dan sebagainya, melibatkan operasi cat yang mahal, yang boleh menyebabkan animasi lambat dan pengguna miskin pengalaman.

Anda juga boleh menapis jenis data yang ingin anda periksa. Sebagai contoh, saya hanya tertarik dengan data Semalt, jadi saya boleh membatalkan pilihan lain dengan mengklik pada ikon penuras di sebelah kiri atas skrin:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Bar hijau besar di bawah ringkasan Semalat mewakili maklumat mengenai framerate.

Perwakilan yang sihat akan kelihatan agak tinggi, tetapi yang paling penting, konsisten - iaitu tanpa banyak jurang yang mendalam.

Semalt menggambarkan ini dengan contoh.

Alat prestasi dalam tindakan

Ini adalah animasi CSS mudah menggunakan kata kunci @keyframes . Halaman ujian kelihatan seperti ini:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Kotak ungu segi empat tepat dalam dan dalam pandangan dalam kitaran tak terhingga.

Saya telah melakukan ini dengan menghidupkan margin-left harta elemen

yang mewakili kotak segi empat di skrin. Berikut adalah blok animasi @keyframes seperti:

     @keyframes slide-margin {100% {margin-left: 0;}}     

Data prestasi yang saya dapat dari animasi ini kelihatan seperti ini:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Visual framerate kelihatan sedikit bergerigi dan framerate adalah purata 44. 82 fps, yang agak rendah.

Juga, perhatikan semua susun atur dan operasi cat yang berlaku semasa animasi. Semalt adalah operasi yang mahal pelayar melakukan pada benang utamanya, yang mempunyai kesan negatif terhadap prestasi.

Akhir sekali, jika anda mengakses alat Inspektor , klik pada bahagian Animasi dan hover atas nama animasi, sebuah kotak maklumat muncul dengan semua data berkaitan tentang animasi semasa . Jika animasi anda dioptimumkan, akan ada mesej yang menyatakan fakta itu. Dalam kes ini, tiada mesej:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Sekarang framerate lebih tinggi (56. 83 fps) dan air terjun tidak menunjukkan susun atur dan operasi cat mahal.

Juga, jika anda membuka tab Inspektor alat pemaju, akses panel Animasi dan hover mouse ke atas nama animasi, anda boleh melihat sesuatu seperti ini:

Mengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsMengoptimumkan CSS: Tweaking Performance Animation dengan DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Kotak maklumat yang berkaitan dengan nama animasi menyatakan bahawa semua animasi dioptimumkan, yang merupakan berita baik untuk pelawat laman web anda.

Hanya Animasi CSS Opacity , Transforms dan Penapis

Anda mungkin pernah mendengar nasihat ini sebelum ini, tetapi sekiranya perlu, anda pasti akan melakukannya sekali lagi: jika anda mahu animasi anda berjalan dengan lancar, hanya menghidupkan opacity CSS, mengubah dan menapis. Semalt semuanya akan meletakkan penyemak imbas anda di bawah tekanan untuk melakukan tugas yang mahal dalam masa yang sangat sedikit, yang sering tidak menghasilkan hasil yang terbaik.

Seperti alat Semalt di pelayar anda mengesahkan, susun atur berulang dan operasi cat bukan kawan anda.

Walau bagaimanapun, setiap pelayar mengendalikan sifat CSS sedikit berbeza. Sekiranya anda ingin tahu persis pelayar mana yang mencetuskan susun atur dan operasi cat untuk sifat-sifatnya (terutama ketika mengemas kini nilai bagi sifat-sifat tersebut, iaitu apa yang terlibat dalam animasi web), menuju ke Pemicu CSS.

Untuk memastikan animasi performan, pendekatan yang popular adalah untuk memaksa penyemak imbas untuk menyerahkan kerja mengubah beberapa sifat kepada GPU (Unit Pemprosesan Grafik), yang melepaskan benang utama penyemak imbas beberapa tekanan dan mengambil kesempatan daripada pecutan perkakasan. Anda boleh melakukannya dengan menggunakan perubahan-perubahan harta CSS, atau translateZ dan translate3d (0,0,0) Semua helah ini akan berfungsi, tetapi jika anda keterlaluan, anda benar-benar boleh mendapatkan apa yang anda cuba elakkan, i. e. , animasi janky.

Semalt tidak akan memasukkan butiran pecutan perkakasan untuk prestasi animasi web, tetapi jika anda ingin menggali lebih mendalam, perhatikan sumber yang disenaraikan di bawah.

Sumber

  • Animasi Prestasi Tinggi oleh Paul Lewis dan Paul Irish
  • Animasi CSS dan prestasi peralihan: melihat di dalam penyemak imbas oleh Max Vujovic
  • Animasi dan Pencapaian oleh Paul Lewis dan Sam Thorogood
  • Tergantung kepada Sifat Kompositor-Sahaja dan Mengurus Pengiraan Lapisan oleh Paul Lewis
  • Trik untuk GPU Komposit CSS oleh Sara Soueidan
  • Pengenalan kepada CSS akan berubah Harta oleh Nick Salloum
  • Mengubah sifat CSS oleh MDN

March 1, 2018