SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Les performances de renduLes performances de rendu
CSSCSS
15 min pour comprendre les enjeux !15 min pour comprendre les enjeux !
Pourquoi les performances CSS ?Pourquoi les performances CSS ?
Pour obtenir des interactions fluides
Défilement (scroll)
Transition et animation CSS
Manipulation du contenu
#2
Pourquoi les performances CSS ?Pourquoi les performances CSS ?
Pour l'image, l'immersion et l'accessibilité !
Parce que le rendu était trop lent, ils ont
diminué l'ombre dans leur design.
— airbnb, bit.ly/airbnb-shadow
Le rendu CSS est l'un des trois principaux
facteurs de lenteurs JavaScript.
— Opera, bit.ly/opera-css-perfs
#3
Pourquoi les performances CSS ?Pourquoi les performances CSS ?
Ne pas faire de transition ou d'animation CSS
avec une autre propriété que
opacity
transform
(translation, rotation, redimensionnement, ...)
filter
(flou, luminosité, contraste, niveau de gris, ...)
#4
Pourquoi les performances CSS ?Pourquoi les performances CSS ?
On va essayer de diminuer la zone "boîte noire"
#5
Pourquoi les performances CSS ?Pourquoi les performances CSS ?
Ne pas faire de transition ou d'animation CSS
avec une autre propriété que
opacity
transform
filter
#6
Thomas ZillioxThomas Zilliox
Développeur freelanceDéveloppeur freelance
Expert CSS : maintenabilité et performanceExpert CSS : maintenabilité et performance
Comment les navigateursComment les navigateurs
passentpassent
du CSS aux pixelsdu CSS aux pixels
Du CSS aux pixelsDu CSS aux pixels
Les navigateurs web ont, à peu près,
deux fils d'exécution pour le rendu
Le principal (Main)
Celui de composition (Compositor)
— Adobe, bit.ly/inside-the-browser
#9
Du CSS aux pixelsDu CSS aux pixels
Le fil principal se charge de
Calculer les règles CSS
La mise en page (Layout / Reflow)
Calculer chaque pixels (Painting / Draw)
— Ilya Grigorik, bit.ly/process-pipeline
#10
Du CSS aux pixelsDu CSS aux pixels
Le fil de composition se charge principalement
de dessiner les pixels sur l'écran
#11
ObjectifObjectif
16ms16ms
Objectif 16msObjectif 16ms
Chaque frame doit prendre maximum 16ms
pour garder une fréquence d'images à 60fps
— Youtube, youtu.be/pfiHFqnPLZ4
#13
0:000:00
Objectif 16msObjectif 16ms
Le premier rendu d'un élément
#14
Objectif 16msObjectif 16ms
Lorsqu'on anime la largeur d'un élément, on
déclenche un re-layout
Aucune autre action utilisateur n'est possible
pendant la mise en page.
— Google, bit.ly/layout-engine
#15
Objectif 16msObjectif 16ms
Lorsqu'on anime une transformation sur un
élément, on reste dans la composition
— Paul Lewis (Google), https://csstriggers.com
#16
Objectif 16msObjectif 16ms
Ne pas faire de transition ou d'animation CSS
avec une autre propriété que
opacity
transform
filter
#17
Des outilsDes outils
pourpour
InvestiguerInvestiguer
Des outils pour investiguerDes outils pour investiguer
Détecter les reflows (Console de Firefox)
#19
0:000:00
Des outils pour investiguerDes outils pour investiguer
Détecter les repaints (Console de Chrome)
#20
0:000:00
Des outils pour investiguerDes outils pour investiguer
Investiguer les repaints (Timeline de Chrome)
#21
Des outils pour investiguerDes outils pour investiguer
Les éléments fixes sont redessinés au
défilement
#22
0:000:00
Des retours d'expériencesDes retours d'expériences
Des retours d'expériencesDes retours d'expériences
Vous pouvez créer un nouveau layer en
appliquant perspective(1px) *
* Attention quand même aux hacks magiques !
#24
0:000:00
Des retours d'expériencesDes retours d'expériences
Si vous avez une image de fond fixe au
défilement
Séparer l'image sur un élément à part
Créer un nouveau layer pour cet élément
— Four Kitchens, http://bit.ly/bg-fixed-perfs
#25
Des retours d'expériencesDes retours d'expériences
Pour animer l'ajout d'une ombre sur un élément
Séparer l'ombre sur un élément à part
Animer l'opacité de cet élément
— Tobias Ahlin, http://bit.ly/animate-shadow
#26
ConclusionConclusion
ConclusionConclusion
Ne pas faire de transition ou d'animation CSS
avec une autre propriété que
opacity
transform
filter
#28
Merci ;)Merci ;)
tzi.fr ou @iamtzitzi.fr ou @iamtzi
Visualiser le reflowVisualiser le reflow
— CSSReflow (Mozilla), bit.ly/cssreflow
#30
0:000:00
Les sources du reflowLes sources du reflow
Elle est déclanchée par
Modification du DOM, dont le contenu
Prise de mesure
( offsetHeight ou getComputedStyle )
Modification de l'attribut class
Modification des styles CSS
Le redimenssionnement de la fenêtre
Le scroll
#31
Les retours d'expérienceLes retours d'expérience
Créer un nouveau layer
translateZ(0)
perspective(1px)
will-change *
* Mais attention will-change will change
— GreenSock, greensock.com/will-change
#32

Contenu connexe

Similaire à Les performances de rendu CSS

HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013Julien LE THUAUT
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !matparisot
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Mathieu Parisot
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...RESONEO
 
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...SEO CAMP
 
Préprocesseurs vs CSS natif : Le match !
Préprocesseurs vs CSS natif : Le match !Préprocesseurs vs CSS natif : Le match !
Préprocesseurs vs CSS natif : Le match !Jonathan Levaillant
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifiéAdrien Russo
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019Boris SCHAPIRA
 
Performance Web : vers la speed update, un pas après l'autre
Performance Web : vers la speed update, un pas après l'autrePerformance Web : vers la speed update, un pas après l'autre
Performance Web : vers la speed update, un pas après l'autreSEO Camp Association
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
 
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir..."Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...Boris SCHAPIRA
 
Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10davrous
 
Reussir les signaux web essentiels (Web Vitals) - Search Y
Reussir les signaux web essentiels (Web Vitals) - Search YReussir les signaux web essentiels (Web Vitals) - Search Y
Reussir les signaux web essentiels (Web Vitals) - Search YAymen Loukil
 
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...SEO CAMP
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
Core Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiserCore Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiseriProspect France
 
Mesurer la performance : onload, pages
Mesurer la performance : onload, pagesMesurer la performance : onload, pages
Mesurer la performance : onload, pagesJean-Pierre Vincent
 
Web { Design Project } Management
Web { Design Project } ManagementWeb { Design Project } Management
Web { Design Project } ManagementDavid Roessli
 

Similaire à Les performances de rendu CSS (20)

HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
 
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
 
Préprocesseurs vs CSS natif : Le match !
Préprocesseurs vs CSS natif : Le match !Préprocesseurs vs CSS natif : Le match !
Préprocesseurs vs CSS natif : Le match !
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifié
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
 
Performance Web : vers la speed update, un pas après l'autre
Performance Web : vers la speed update, un pas après l'autrePerformance Web : vers la speed update, un pas après l'autre
Performance Web : vers la speed update, un pas après l'autre
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
 
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir..."Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
 
Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10
 
Reussir les signaux web essentiels (Web Vitals) - Search Y
Reussir les signaux web essentiels (Web Vitals) - Search YReussir les signaux web essentiels (Web Vitals) - Search Y
Reussir les signaux web essentiels (Web Vitals) - Search Y
 
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...
Core Web Vitals, quel impact et comment s'y attaquer ? - Samson Tat - SEO CAM...
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
Core Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiserCore Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, Optimiser
 
Mesurer la performance : onload, pages
Mesurer la performance : onload, pagesMesurer la performance : onload, pages
Mesurer la performance : onload, pages
 
Web { Design Project } Management
Web { Design Project } ManagementWeb { Design Project } Management
Web { Design Project } Management
 

Les performances de rendu CSS

  • 1. Les performances de renduLes performances de rendu CSSCSS 15 min pour comprendre les enjeux !15 min pour comprendre les enjeux !
  • 2. Pourquoi les performances CSS ?Pourquoi les performances CSS ? Pour obtenir des interactions fluides Défilement (scroll) Transition et animation CSS Manipulation du contenu #2
  • 3. Pourquoi les performances CSS ?Pourquoi les performances CSS ? Pour l'image, l'immersion et l'accessibilité ! Parce que le rendu était trop lent, ils ont diminué l'ombre dans leur design. — airbnb, bit.ly/airbnb-shadow Le rendu CSS est l'un des trois principaux facteurs de lenteurs JavaScript. — Opera, bit.ly/opera-css-perfs #3
  • 4. Pourquoi les performances CSS ?Pourquoi les performances CSS ? Ne pas faire de transition ou d'animation CSS avec une autre propriété que opacity transform (translation, rotation, redimensionnement, ...) filter (flou, luminosité, contraste, niveau de gris, ...) #4
  • 5. Pourquoi les performances CSS ?Pourquoi les performances CSS ? On va essayer de diminuer la zone "boîte noire" #5
  • 6. Pourquoi les performances CSS ?Pourquoi les performances CSS ? Ne pas faire de transition ou d'animation CSS avec une autre propriété que opacity transform filter #6
  • 7. Thomas ZillioxThomas Zilliox Développeur freelanceDéveloppeur freelance Expert CSS : maintenabilité et performanceExpert CSS : maintenabilité et performance
  • 8. Comment les navigateursComment les navigateurs passentpassent du CSS aux pixelsdu CSS aux pixels
  • 9. Du CSS aux pixelsDu CSS aux pixels Les navigateurs web ont, à peu près, deux fils d'exécution pour le rendu Le principal (Main) Celui de composition (Compositor) — Adobe, bit.ly/inside-the-browser #9
  • 10. Du CSS aux pixelsDu CSS aux pixels Le fil principal se charge de Calculer les règles CSS La mise en page (Layout / Reflow) Calculer chaque pixels (Painting / Draw) — Ilya Grigorik, bit.ly/process-pipeline #10
  • 11. Du CSS aux pixelsDu CSS aux pixels Le fil de composition se charge principalement de dessiner les pixels sur l'écran #11
  • 13. Objectif 16msObjectif 16ms Chaque frame doit prendre maximum 16ms pour garder une fréquence d'images à 60fps — Youtube, youtu.be/pfiHFqnPLZ4 #13 0:000:00
  • 14. Objectif 16msObjectif 16ms Le premier rendu d'un élément #14
  • 15. Objectif 16msObjectif 16ms Lorsqu'on anime la largeur d'un élément, on déclenche un re-layout Aucune autre action utilisateur n'est possible pendant la mise en page. — Google, bit.ly/layout-engine #15
  • 16. Objectif 16msObjectif 16ms Lorsqu'on anime une transformation sur un élément, on reste dans la composition — Paul Lewis (Google), https://csstriggers.com #16
  • 17. Objectif 16msObjectif 16ms Ne pas faire de transition ou d'animation CSS avec une autre propriété que opacity transform filter #17
  • 19. Des outils pour investiguerDes outils pour investiguer Détecter les reflows (Console de Firefox) #19 0:000:00
  • 20. Des outils pour investiguerDes outils pour investiguer Détecter les repaints (Console de Chrome) #20 0:000:00
  • 21. Des outils pour investiguerDes outils pour investiguer Investiguer les repaints (Timeline de Chrome) #21
  • 22.
  • 23. Des outils pour investiguerDes outils pour investiguer Les éléments fixes sont redessinés au défilement #22 0:000:00
  • 24. Des retours d'expériencesDes retours d'expériences
  • 25. Des retours d'expériencesDes retours d'expériences Vous pouvez créer un nouveau layer en appliquant perspective(1px) * * Attention quand même aux hacks magiques ! #24 0:000:00
  • 26. Des retours d'expériencesDes retours d'expériences Si vous avez une image de fond fixe au défilement Séparer l'image sur un élément à part Créer un nouveau layer pour cet élément — Four Kitchens, http://bit.ly/bg-fixed-perfs #25
  • 27. Des retours d'expériencesDes retours d'expériences Pour animer l'ajout d'une ombre sur un élément Séparer l'ombre sur un élément à part Animer l'opacité de cet élément — Tobias Ahlin, http://bit.ly/animate-shadow #26
  • 29. ConclusionConclusion Ne pas faire de transition ou d'animation CSS avec une autre propriété que opacity transform filter #28
  • 30. Merci ;)Merci ;) tzi.fr ou @iamtzitzi.fr ou @iamtzi
  • 31. Visualiser le reflowVisualiser le reflow — CSSReflow (Mozilla), bit.ly/cssreflow #30 0:000:00
  • 32. Les sources du reflowLes sources du reflow Elle est déclanchée par Modification du DOM, dont le contenu Prise de mesure ( offsetHeight ou getComputedStyle ) Modification de l'attribut class Modification des styles CSS Le redimenssionnement de la fenêtre Le scroll #31
  • 33. Les retours d'expérienceLes retours d'expérience Créer un nouveau layer translateZ(0) perspective(1px) will-change * * Mais attention will-change will change — GreenSock, greensock.com/will-change #32