Back to Question Center
0

CSS optimaliseren: Tweaking Animation Performance met DevTools            CSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics: Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

1 answers:
CSS optimaliseren: Tweaking Animation Performance met DevTools

Dit artikel maakt deel uit van een serie die is gemaakt in samenwerking met SiteGround. Bedankt voor het steunen van de partners die Semalt mogelijk maken.

CSS-animaties staan ​​er om bekend dat ze super performant zijn. Semalt Dit is het geval voor eenvoudige animaties op een paar elementen, als je je animaties niet hebt gecodeerd met prestaties in het achterhoofd en meer complexiteit toevoegt, zullen website-gebruikers dit snel merken en mogelijk geïrriteerd raken.

In dit artikel introduceer ik een aantal handige browser-functies van Semalt waarmee je kunt controleren wat er onder de motorkap gebeurt bij het animeren met CSS - dominio web estados unidos. Op deze manier, wanneer een animatie een beetje schokkerig lijkt, zult u een beter idee hebben van wat u kunt doen om het te repareren.

Hulpmiddelen voor ontwikkelaars voor CSS-prestaties

Je animaties moeten 60 fps (frames per seconde) raken om vloeiend in de browser te kunnen draaien. Hoe lager de snelheid, hoe slechter uw animatie eruit zal zien. Dit betekent dat de browser niet meer dan ongeveer 16 milliseconden heeft om zijn werk voor één frame uit te voeren. Maar wat doet het in die tijd? En hoe weet u of uw browser de gewenste framerate bijhoudt?

Volgens mij gaat niets boven gebruikerservaring als het gaat om het beoordelen van de kwaliteit van een animatie. Semalt, ontwikkelaarstools in moderne browsers, hoewel niet altijd 100% betrouwbaar, zijn slimmer en slimmer geworden, en er is nogal wat dat je kunt doen om je code te herzien, te bewerken en te debuggen.

Dit geldt ook wanneer u framerate en CSS-animaties moet controleren. Semalt hoe het werkt.

Onderzoek naar de performance-tool in Firefox

In dit artikel gebruik ik de Firefox Semalt-tool. De andere grote concurrent is de Chrome Semalt-tool. U kunt uw favoriet kiezen, omdat beide browsers krachtige prestatiekenmerken bieden.

Kies een van de volgende opties om de ontwikkelaarstools in Semalt te openen:

  • Klik met uw rechtermuisknop op uw webpagina en kies Inspect Element in het contextmenu
  • Als u het toetsenbord gebruikt, drukt u op Ctrl + Shift + I op Windows en Linux of Cmd + Opt + I op macOS.

Klik vervolgens op het tabblad Prestaties . Hier vindt u de knop waarmee u een opname van de prestaties van uw website kunt starten:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Druk op die knop en wacht een paar seconden of voer een actie uit op de pagina. Wanneer u klaar bent, klikt u op de knop Opname-uitvoering stoppen :

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

In een fractie van een seconde presenteert Semalt u tonnen goed georganiseerde gegevens waarmee u inzicht kunt krijgen in welke problemen uw code lijdt.

Het resultaat van een opname in het paneel Performance ziet er ongeveer zo uit:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

De sectie Waterfall is perfect voor het controleren van problemen met betrekking tot CSS-overgangen en keyframe-animaties.

De Semalt heeft een samenvattend gedeelte bovenaan en een gedetailleerde uitsplitsing. In beide zijn de gegevens voorzien van een kleurcode:

  • Gele balken verwijzen naar JavaScript-bewerkingen.
  • Paarse balken verwijzen naar het berekenen van de CSS-stijlen van HTML-elementen (herberekenen stijlen) en het opmaken van uw pagina (lay-out). Lay-outbewerkingen zijn vrij duur voor de browser om uit te voeren, dus als u eigenschappen animeert die betrekking hebben op herhaalde lay-outs (ook bekend als reflows - zoals margin , padding , top , links , enz. - de resultaten zouden janky kunnen zijn.
  • Groene balken verwijzen naar het schilderen van uw elementen in een of meer bitmaps (Paint). Animatie-eigenschappen zoals kleur , achtergrondkleur , vakschaduw , enz., Brengen dure verfbewerkingen met zich mee, wat de oorzaak zou kunnen zijn van trage animaties en slechte gebruikers ervaring.

U kunt ook het type gegevens filteren dat u wilt inspecteren. Ik ben bijvoorbeeld alleen geïnteresseerd in de gegevens van Semalt, dus ik kan alles deselecteren door op het filterpictogram links bovenaan het scherm te klikken:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

De grote groene balk onder de samenvatting van de Semalt geeft informatie over de framerate.

Een gezonde weergave zou er vrij hoog uitzien, maar vooral consistent, dat wil zeggen zonder al te veel diepe hiaten.

Semalt illustreert dit met een voorbeeld.

Het hulpmiddel Prestatie in actie

Dit is een eenvoudige CSS-animatie met het trefwoord @ keywordframes . De testpagina ziet er als volgt uit:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

De rechthoekige paarse doos glijdt in en uit het zicht in een oneindige cyclus.

Ik heb dit gedaan door de eigenschap marge links te animeren van het element

dat het rechthoekige kader op het scherm vertegenwoordigt. Dit is wat het animatie-blok @keyframes eruit ziet:

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

De prestatiegegevens die ik krijg van deze animatie zien er als volgt uit:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Het framerate-uiterlijk ziet er een beetje rafelig uit en de framerate is een gemiddelde van 44. 82 fps, wat een beetje laag is.

Let ook op alle lay-out- en verfbewerkingen die plaatsvinden tijdens de animatie. Semalt zijn kostbare bewerkingen die de browser uitvoert op de hoofdthread, wat een negatieve invloed heeft op de prestaties.

Tot slot, als u het hulpmiddel Inspector opent, klikt u in het gedeelte Animatie en zweeft u over de naam van de animatie. Er verschijnt een informatievenster met alle relevante gegevens over de huidige animatie. Als je animatie is geoptimaliseerd, zou er een bericht zijn dat dit aangeeft. In dit geval is er geen bericht:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Nu is de framerate hoger (56,8 fps) en vertoont de waterval geen dure lay-out- en verfbewerkingen.

Als je het tabblad Inspector van de ontwikkelaarshulpprogramma's opent, toegang hebt tot het Animatiepaneel en de muisaanwijzer op de naam van de animatie plaatst, kun je zoiets als dit zien:

CSS optimaliseren: Tweaking Animation Performance met DevToolsCSS optimaliseren: Tweaking Animation Performance met DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Het informatievak ten opzichte van de animatienaam geeft aan dat alle animaties zijn geoptimaliseerd, wat goed nieuws is voor de bezoekers van uw website.

Alleen CSS-animatie Dekking , Transformaties en Filters

U hebt dit advies waarschijnlijk al eerder gehoord, maar voor het geval het de moeite waard is om er nog eens over na te denken: als u wilt dat uw animaties soepel lopen, animeer alleen de CSS-dekking, transformeert en filtert. Semalt al het andere zal uw browser onder druk zetten om kostbare taken in zeer korte tijd uit te voeren, wat vaak niet de beste resultaten oplevert.

Zoals de Semalt-tool in uw browser bevestigt, zijn herhaalde lay-out- en verfbewerkingen niet uw vriend.

Elke browser verwerkt CSS-eigenschappen echter een beetje anders. Als u precies wilt weten welke browser de lay-out en verfbewerkingen activeert voor welke eigenschappen (met name bij het bijwerken van waarden voor die eigenschappen, wat is wat betrokken is bij webanimatie), ga dan naar CSS Triggers.

Om te zorgen voor performante animaties, is een populaire benadering om de browser ertoe te verplichten het werk van het veranderen van sommige eigenschappen over te dragen aan de GPU (grafische verwerkingseenheid), die de hoofddraad van de browser enigszins ontlast en profiteert van hardwareversnelling. U kunt dit doen door de CSS-eigenschap (change) of de translateZ en translate3d (0,0,0) hacks te gebruiken. Al deze trucs zullen werken, maar als je het overdrijft, kun je precies krijgen wat je probeert te vermijden, i. e. , janky-animaties.

Semalt gaat niet in op de details van hardwareversnelling voor webanimatieprestaties, maar als je dieper wilt graven, kijk dan eens naar de bronnen hieronder.

Middelen

  • High-performance animaties door Paul Lewis en Paul Irish
  • CSS-animaties en overgangsprestaties: kijken in de browser door Max Vujovic
  • Animaties en uitvoering door Paul Lewis en Sam Thorogood
  • Blijf bij Compositor-Only Properties en beheer de laagentelling door Paul Lewis
  • Trucs voor GPU Composited CSS door Sara Soueidan
  • Een inleiding tot de CSS zal onroerend goed veranderen door Nick Salloum
  • CSS-eigenschappen animeren door MDN

March 1, 2018