BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités CSS Containment Est Désormais Un Standard Web

CSS Containment Est Désormais Un Standard Web

Favoris

Le CSS Working Group a récemment publié le CSS Containment Module Level 1 en tant que nouveau standard Web. Ce module CSS spécifie la propriété contain, qui peut être utilisé pour indiquer les éléments dont le sous-arbre est indépendant du reste de la page d'une certaine manière. Cette indépendance peut ensuite être utilisée par les navigateurs pour fournir des optimisations beaucoup plus fortes lors du rendu d'une page, tout en permettant aux auteurs d'être sûrs que leur page ne tombera pas accidentellement dans un chemin de code lent en raison d'un changement inoffensif.

L'objectif principal de la norme CSS Containment est d'améliorer les performances du rendu des pages Web en ignorant certains sous-arbres du document dans certaines parties du processus de rendu de page. Rachel Andrew, rédactrice en chef de Smashing Magazine, explique dans un article consacré au nouveau standard web :

Lorsque le contenu de notre box est modifié, le navigateur doit considérer que l'un des éléments peut avoir changé. Les navigateurs sont généralement assez bons pour gérer cela, car c'est une chose courante. Cela dit, en tant que développeur, vous saurez si chacun des composants est indépendant, et qu'un changement à l'un n'affecte pas les autres, donc ce serait bien si vous pouviez le faire savoir au navigateur via votre CSS. C'est ce que la propriété CSS contain vous donnent.

La spécification du module spécifie une propriété contain pour permettre une isolation prévisible d'un sous-arbre du reste de la page. La propriété contain indique qu'un élément et son contenu sont indépendants du reste de l'arborescence du document d'une manière qui est spécifiée en choisissant l'une des cinq valeurs : strict, content, size, layout et paint.

La valeur layout de la propriété contain indique que la disposition interne de l'élément n'est affectée par rien en dehors de l'élément et que le contenu de l'élément ne peut avoir aucun effet sur les ancêtres. La valeur paint indique que les descendants de l'élément ne peuvent pas être affichés en dehors de ses limites et que rien ne débordera de cet élément (ou s'il le fait, il ne sera pas visible). La valeur size signifie que les dimensions de l'élément sont indépendantes du contenu de l'élément. Cela signifie que la taille de la zone de l'élément peut être calculée indépendamment des enfants de l'élément. La valeur content est un raccourci pour contain: layout paint, tandis que la valeur strict est un raccourci pour layout paint size.

La propriété contain permet au navigateur de recalculer la disposition, le style, le rendu, la taille ou toute combinaison de ceux-ci pour une zone limitée du DOM et non pour la page entière, ce qui entraîne des avantages évidents de refusion et de rafraichissement, surtout dans les longues pages. Les gains de performances sont suffisamment importants pour que Bloomberg puisse prendre en charge les travaux d'Igalia sur la mise en œuvre du CSS Containment dans Chromium. Manuel Rego Casasnovas a fourni dans son discours à CSSconf EU 2019 un exemple d'interface utilisateur avec plus de 10 000 cellules dont le contenu du texte change constamment et qui pourraient être rendues 4x plus rapidement. Manuel Rego Casasnovas a expliqué la motivation de Bloomberg :

Bloomberg possède des interfaces utilisateur assez complexes et [elles tirent] des avantages de l'utilisation de CSS Containment pour certaines d'entre elles.

Paul Lewis a décrit aux développeurs soucieux des performances quelles parties du processus de rendu sont affectées par les modifications de la propriété DOM. Le site csstriggers rassemble en outre les propriétés qui déclenchent une mise en page, selon le navigateur utilisé.

CSS Containment est implémenté dans les navigateurs modernes à l'exception de Safari.

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT