| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/CSS/Guides/Containment/Using | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
La compartimentation CSS amliore les performances des pages web en permettant au navigateur d'isoler un sous-arbre de la page du reste de la page. Si le navigateur sait qu'une partie de la page est indpendante du reste du contenu, le rendu peut tre optimis et les performances amliores.
Les proprits contain et content-visibility permettent aux dveloppeureuses d'informer les agents utilisateurs si un lment doit ou non rendre son contenu, et s'il doit rendre son contenu lorsqu'il est hors cran. L'agent utilisateur applique ensuite la compartimentation aux lments lorsque c'est appropri, en diffrant potentiellement la mise en page et le rendu jusqu' ce que cela soit ncessaire.
Ce guide dcrit les objectifs de base de la compartimentation CSS et comment tirer parti de contain et content-visibility pour une meilleure exprience utilisateurice.
Les pages web contiennent souvent plusieurs sections qui sont, logiquement, indpendantes les unes des autres. La compartimentation CSS permet de les traiter de manire rellement indpendante les unes des autres en ce qui concerne le rendu.
Par exemple, les blogs contiennent gnralement plusieurs articles, chacun contenant un titre et un contenu, comme dans le balisage ci-dessous.
<h1>Mon blog</h1>
<article>
<h2>Titre d'un bel article</h2>
<p>Contenu ici.</p>
</article>
<article>
<h2>Titre d'un autre article</h2>
<p>Autre contenu ici.</p>
</article>
Avec CSS, nous appliquons la proprit contain avec une valeur de content chaque article. La valeur content est un raccourci pour contain: layout paint style :
article {
contain: content;
}
En toute logique, chaque article est indpendant des autres articles de la page. Cette information est gnralement connue, mme vidente, pour lela dveloppeureuse web qui cre la page. Cependant, les navigateurs ne connaissent pas l'intention derrire votre contenu et ne peuvent pas supposer qu'un article ou toute autre section de contenu est entirement autonome.
Cette proprit permet d'expliquer cela au navigateur et de lui donner l'autorisation explicite de procder des optimisations de performances. Elle indique au navigateur que la mise en page interne de l'lment est totalement distincte du reste de la page, et que tout ce qui concerne cet lment est affich l'intrieur de ses limites. Rien ne peut dborder de manire visible.
En dfinissant contain: content sur chaque lment <article>, nous avons indiqu ceci ; nous avons signal au navigateur que chaque article est indpendant. Le navigateur peut alors utiliser cette information pour dcider de la manire de rendre chaque lment <article> de contenu. Par exemple, il peut ne pas afficher les articles situs en dehors de la zone visible.
Lorsque des lments supplmentaires sont ajouts la fin de la page, le navigateur n'a pas besoin de recalculer la mise en page ni de rafrachir l'affichage du contenu prcdent ; il n'a pas non plus besoin d'intervenir sur une zone situe en dehors de la sous-arborescence de l'lment conteneur. En revanche, si les proprits du modle de bote sont dpendantes, le navigateur doit recalculer la mise en page et rafrachir l'affichage. Par exemple, si un <article> est mis en forme de telle sorte que sa taille dpende de son contenu (par exemple, avec height: auto), le navigateur doit alors tenir compte de ce changement de taille.
containIl existe quatre types de compartimentation : mise en page, peinture, taille et style. Utilisez la proprit contain pour dfinir le ou les types que vous souhaitez appliquer un lment en incluant n'importe quelle combinaison de ces types.
article {
contain: layout;
}
La mise en page est normalement limite l'ensemble du document, ce qui signifie que si vous dplacez un lment, l'ensemble du document doit tre trait comme si les choses pouvaient se dplacer n'importe o. En utilisant contain: layout, vous pouvez indiquer au navigateur qu'il n'a besoin de vrifier que cet lment tout ce qui se trouve l'intrieur de l'lment est limit cet lment et n'affecte pas le reste de la page, la bote contenant tablissant un contexte de formatage indpendant.
En outre :
float est effectue indpendamment l'intrieur de l'lment dfini.absolute et fixed.z-index peut tre utilis.Note :
Les valeurs style et layout de contain sont automatiquement appliques lors de l'utilisation des proprits container-type et container-name.
article {
contain: paint;
}
La compartimentation de la peinture dcoupe essentiellement la bote jusqu'au bord de remplissage de la bote principale. Il ne peut y avoir aucun dbordement visible. Les mmes notes supplmentaires sont vraies pour la compartimentation de la peinture que pour la compartimentation de la mise en page (voir ci-dessus).
Un autre avantage est que si l'lment avec la compartimentation applique est hors cran, le navigateur n'a pas besoin de peindre ses lments enfants ceux-ci sont galement hors cran, car ils sont compltement contenus par cette bote.
article {
contain: size;
}
La compartimentation de taille n'apporte pas grand-chose en termes d'optimisation des performances lorsqu'elle est utilise seule. Cependant, la compartimentation de taille signifie que la taille des enfants de l'lment dont la taille est compartimente ne peuvent pas influencer la taille de l'lment lui-mme sa taille est calcule comme s'il n'avait pas d'enfants.
Si vous dfinissez contain: size sur un lment, vous devez dfinir la taille de l'lment en utilisant contain-intrinsic-size, ou les proprits abrges contain-intrinsic-width et contain-intrinsic-height, dans cet ordre. Si aucune taille n'est dfinie, l'lment risque d'avoir une taille nulle dans la plupart des cas.
article {
contain: size;
contain-intrinsic-size: 100vw auto none;
}
article {
contain: style;
}
Malgr son nom, la compartimentation de style ne fournit pas de styles encapsuls comme vous l'obtenez avec le DOM d'ombre ou @scope.
Le principal cas d'utilisation de la valeur style est de prvenir les situations o un compteur CSS peut tre modifi dans un lment, ce qui peut ensuite affecter le reste de l'arborescence.
Utiliser contain: style garantit que les proprits counter-increment et counter-set crent de nouveaux compteurs limits ce sous-arbre uniquement.
Vous pouvez inclure plus d'un type de compartimentation en incluant plusieurs valeurs spares par des espaces, comme contain: layout paint ou en utilisant l'une des deux valeurs spciales.
Il existe deux valeurs spciales de contain qui sont des raccourcis pour les trois premiers ou les quatre types de compartimentation :
contentstrictNous avons rencontr la premire dans l'exemple ci-dessus. L'utilisation de contain: content active la compartimentation layout, paint et style. Comme elle omet size, c'est une valeur sre appliquer largement.
La dclaration contain: strict, qui se comporte de la mme manire que la dclaration contain: size layout paint style (qui inclut quatre valeurs spares par des espaces), offre la compartimentation la plus complte. Il est plus risqu de l'utiliser, car elle applique la compartimentation size ; le risque existe qu'une bote puisse finir avec une taille nulle en raison d'une dpendance la taille de ses enfants.
Pour liminer ce risque, dfinissez toujours une taille lors de l'utilisation de strict :
article {
contain: strict;
contain-intrinsic-size: 80vw auto none;
}
L'exemple ci-dessus est quivalent :
article {
contain: size layout paint style;
contain-intrinsic-size: 80vw auto none;
}
content-visibilityLorsque vous avez beaucoup de contenu qui bnficie d'une compartimentation lourde et qui est souvent hors cran par exemple si tous vos articles de blog sont visibles sur les pages d'accueil du blog comme un blog dfilement infini content-visibility: auto peut tre utilis pour appliquer toutes les compartimentations en une seule fois.
La proprit content-visibility contrle si un lment rend ou non son contenu, tout en appliquant un ensemble solide de compartimentations, permettant aux agents utilisateurs de potentiellement omettre de grandes portions de travail de mise en page et de rendu jusqu' ce que cela devienne ncessaire. Elle permet l'agent utilisateur de sauter le travail de rendu d'un lment (y compris la mise en page et la peinture) jusqu' ce qu'il soit ncessaire ce qui rend le chargement initial de la page beaucoup plus rapide.
Ses valeurs possibles sont :
visible : comportement par dfaut le contenu d'un lment est mis en page et affich normalement.hidden : l'lment ignore son contenu. Le contenu ignor n'est pas accessible aux fonctionnalits de l'agent utilisateur telles que la recherche dans la page, la navigation par ordre de tabulation, etc., et ne peut ni tre slectionn ni recevoir une slection.auto : l'lment active le confinement de mise en page, le confinement de style et le confinement de rendu, comme si la proprit contain: content tait dfinie. Si l'lment n'est pas pertinent pour l'utilisateurice, il ignore galement son contenu. Contrairement hidden, le contenu ignor reste accessible aux interactions de l'utilisateurice, pouvant toujours recevoir une slection, tre mis en vidence, figurer dans l'ordre de tabulation normal et tre recherch dans le contenu.Les agents utilisateurs ont un concept de contenu pertinent pour l'utilisateurice (angl.). Un lment devient pertinent pour l'utilisateurice si l'une des conditions suivantes est remplie :
Lorsque content-visibility: auto est dfini, et que le navigateur dtermine que le contenu est pertinent pour l'utilisateurice, le navigateur rend ce contenu.
Lorsque vous dfinissez content-visibility: hidden sur un lment, vous indiquez au navigateur qu'il n'est pas pertinent pour l'utilisateurice, et que par consquent son contenu doit tre ignor (angl.) et ne doit pas tre rendu. Cela permet d'amliorer les performances.
Le navigateur ignore galement le contenu d'un lment lorsque content-visibility: auto est dfini dessus, et que le navigateur dtermine que son contenu n'est pas pertinent pour l'utilisateurice.
Lorsque un lment ignore son contenu :
visibility: hidden tait dfini dessus.pointer-events: none tait dfini dessus.Cela se produit dans les deux cas mentionns ci-dessus, mais avec content-visibility: auto, le contenu peut tre recherch, recevoir la slection et passer d'un tat non pertinent pertinent. Ce n'est pas le cas pour content-visibility: hidden.
Note :
Pour animer la transition de content-visibility: hidden une valeur visible, vous devez dfinir transition-behavior: allow-discrete et les styles @starting-style. Voir transition avec display et content-visibility pour en savoir plus.
contentvisibilityautostatechangeCette page a t modifie le 2 juil. 2026 par les contributeurices du MDN.
-webkit-border-before-webkit-box-reflect-webkit-mask-box-image-webkit-mask-composite-webkit-mask-position-x-webkit-mask-position-y-webkit-mask-repeat-x-webkit-mask-repeat-y-webkit-tap-highlight-color-webkit-text-fill-color-webkit-text-security-webkit-text-stroke-webkit-text-stroke-color-webkit-text-stroke-width-webkit-touch-calloutProprits personnalises (--*) : variables CSSaccent-coloralignment-baselineallanchor-nameanchor-scopeanimationappearanceaspect-ratiobackdrop-filterbackface-visibilitybackgroundbaseline-shiftbaseline-sourceblock-sizeborder-blockborder-block-colorborder-block-endborder-block-end-colorborder-block-end-styleborder-block-end-widthborder-block-startborder-block-start-colorborder-block-start-styleborder-block-start-widthborder-block-styleborder-block-widthborder-bottomborder-bottom-colorborder-bottom-left-radiusborder-bottom-right-radiusborder-bottom-styleborder-bottom-widthborder-collapseborder-colorborder-end-end-radiusborder-end-start-radiusborder-imageborder-image-outsetborder-image-repeatborder-image-sliceborder-image-sourceborder-image-widthborder-inlineborder-inline-colorborder-inline-endborder-inline-end-colorborder-inline-end-styleborder-inline-end-widthborder-inline-startborder-inline-start-colorborder-inline-start-styleborder-inline-start-widthborder-inline-styleborder-inline-widthborder-leftborder-left-colorborder-left-styleborder-left-widthborder-radiusborder-rightborder-right-colorborder-right-styleborder-right-widthborder-shapeborder-spacingborder-start-end-radiusborder-start-start-radiusborder-styleborder-topborder-top-colorborder-top-left-radiusborder-top-right-radiusborder-top-styleborder-top-widthborder-widthborderbottomcaption-sidecaretclearclip-pathclip-ruleclipcolorcolumn-countcolumn-fillcolumn-gapcolumn-heightcolumn-rulecolumn-rule-breakcolumn-rule-colorcolumn-rule-inset-capcolumn-rule-inset-cap-endcolumn-rule-inset-cap-startcolumn-rule-inset-junctioncolumn-rule-inset-junction-endcolumn-rule-inset-junction-startcolumn-rule-stylecolumn-rule-visibility-itemscolumn-rule-widthcolumn-spancolumn-widthcolumn-wrapcolumnscontaincontainer-namecontainer-typecontainercontent-visibilitycontentcorner-block-end-shapecorner-block-start-shapecorner-bottom-left-shapecorner-bottom-right-shapecorner-bottom-shapecorner-end-end-shapecorner-end-start-shapecorner-inline-end-shapecorner-inline-start-shapecorner-left-shapecorner-right-shapecorner-shapecorner-start-end-shapecorner-start-start-shapecorner-top-left-shapecorner-top-right-shapecorner-top-shapecursorcxcyddirectiondisplaydominant-baselinedynamic-range-limitempty-cellsfield-sizingfill-opacityfill-rulefillfilterflexfloatflood-colorflood-opacityfont-familyfont-feature-settingsfont-kerningfont-language-overridefont-optical-sizingfont-palettefont-sizefont-size-adjustfont-smoothfont-stretchfont-stylefont-synthesisfont-synthesis-positionfont-synthesis-small-capsfont-synthesis-stylefont-synthesis-weightfont-variantfont-variant-alternatesfont-variant-capsfont-variant-east-asianfont-variant-emojifont-variant-ligaturesfont-variant-numericfont-variant-positionfont-variation-settingsfont-weightfont-widthfontforced-color-adjustframe-sizinggapgridhanging-punctuationheighthyphenate-characterhyphenate-limit-charshyphensinitial-letterinline-sizeinsetinteractivityinterpolate-sizeisolationleftletter-spacinglighting-colorlink-parametersmarginmarkermaskmix-blend-modeoffsetopacityorderorphansoutlineoverflowoverlaypaddingpagepaint-orderpath-lengthperspective-originperspectivepointer-eventspositionprint-color-adjustquotesrreading-flowreading-orderresizerightrotaterulerxryscalescroll-behaviorscroll-initial-targetscroll-marginscroll-margin-blockscroll-margin-block-endscroll-margin-block-startscroll-margin-bottomscroll-margin-inlinescroll-margin-inline-endscroll-margin-inline-startscroll-margin-leftscroll-margin-rightscroll-margin-topscroll-marker-groupscroll-paddingscroll-padding-blockscroll-padding-block-endscroll-padding-block-startscroll-padding-bottomscroll-padding-inlinescroll-padding-inline-endscroll-padding-inline-startscroll-padding-leftscroll-padding-rightscroll-padding-topscroll-snap-alignscroll-snap-stopscroll-snap-typescroll-target-groupscroll-timelinescroll-timeline-axisscroll-timeline-namespeak-asstop-colorstop-opacitystroketab-sizetable-layouttext-aligntext-align-lasttext-anchortext-autospacetext-boxtext-box-edgetext-box-trimtext-combine-uprighttext-decorationtext-decoration-colortext-decoration-insettext-decoration-linetext-decoration-skiptext-decoration-skip-inktext-decoration-styletext-decoration-thicknesstext-emphasistext-emphasis-colortext-emphasis-positiontext-emphasis-styletext-fittext-indenttext-justifytext-orientationtext-overflowtext-renderingtext-shadowtext-size-adjusttext-spacing-trimtext-transformtext-underline-offsettext-underline-positiontext-wraptext-wrap-modetext-wrap-styletoptouch-actiontransformtransitiontranslatetrigger-scopeunicode-bidiuser-modifyuser-selectvector-effectvertical-alignvisibilitywhite-spacewhite-space-collapsewidowswidthwill-changeword-breakword-spacingwriting-modexyz-indexzoom:active-view-transition:active-view-transition-type():active:any-link:autofill:blank:buffering:checked:current:default:defined:dir():disabled:empty:enabled:first-child:first-of-type:first:focus-visible:focus-within:focus:fullscreen:future:has-slotted:has():heading:heading():host-context():host:host():hover:in-range:indeterminate:interest-source:interest-target:invalid:is():lang():last-child:last-of-type:left:link:local-link:modal:muted:not():only-child:only-of-type:open:optional:out-of-range:past:paused:picture-in-picture:placeholder-shown:playing:popover-open:read-only:read-write:required:right:root:scope:seeking:stalled:state():target:user-invalid:user-valid:valid:visited:volume-locked:where():xr-overlay::-webkit-inner-spin-button::-webkit-meter-bar::-webkit-meter-even-less-good-value::-webkit-meter-inner-element::-webkit-meter-optimum-value::-webkit-meter-suboptimum-value::-webkit-progress-bar::-webkit-progress-inner-element::-webkit-progress-value::-webkit-scrollbar::-webkit-search-cancel-button::-webkit-search-results-button::-webkit-slider-runnable-track::-webkit-slider-thumb::after::backdrop::before::checkmark::column::cue::details-content::file-selector-button::first-letter::first-line::grammar-error::highlight()::marker::part()::picker-icon::picker()::placeholder::search-text::selection::slotted()::spelling-error::target-text@charset@color-profile@container@counter-style@custom-media@document@font-face@font-feature-values@font-palette-values@function@import@keyframes@layer@media-moz-device-pixel-ratio-webkit-animation-webkit-device-pixel-ratio-webkit-transform-2d-webkit-transform-3d-webkit-transitionany-hoverany-pointeraspect-ratiocolorcolor-gamutcolor-indexdevice-aspect-ratiodevice-heightdevice-posturedevice-widthdisplay-modedynamic-rangeforced-colorsgridheighthorizontal-viewport-segmentshoverinverted-colorsmonochromeorientationoverflow-blockoverflow-inlinepointerprefers-color-schemeprefers-contrastprefers-reduced-dataprefers-reduced-motionprefers-reduced-transparencyresolutionscanscriptingshapeupdatevertical-viewport-segmentsvideo-dynamic-rangewidth@namespace@page@position-try@property@scope@starting-style@supports@view-transition<absolute-size><alpha-value><angle-percentage><angle><animation-action><axis><baseline-position><basic-shape><blend-mode><box-edge><calc-keyword><calc-sum><color-interpolation-method><color><content-distribution><content-position><corner-shape-value><custom-ident><dashed-function><dashed-ident><dimension><display-box><display-inside><display-internal><display-legacy><display-listitem><display-outside><easing-function><filter-function><flex><frequency-percentage><frequency><generic-family><gradient><hex-color><hue-interpolation-method><hue><ident><image><integer><length-percentage><length><line-style><line-width><named-color><number><overflow-position><overflow><percentage><position-area><position><ratio><relative-size><resolution><rule-list><self-position><shape><string><system-color><text-edge><time-percentage><time><timeline-range-name><transform-function><url>-moz-image-rect()abs()acos()alpha()anchor-size()anchor()asin()atan()atan2()attr()blur()brightness()calc-size()calc()circle()clamp()color-mix()color()conic-gradient()contrast-color()contrast()cos()counter()counters()cross-fade()cubic-bezier()device-cmyk()drop-shadow()dynamic-range-limit-mix()element()ellipse()env()exp()fit-content()grayscale()hsl()hue-rotate()hwb()hypot()if()image-set()image()inset()invert()lab()lch()light-dark()linear-gradient()linear()log()matrix()matrix3d()max()min()minmax()mod()oklab()oklch()opacity()paint()param()path()perspective()polygon()pow()progress()radial-gradient()random()ray()rect()rem()repeat()repeating-conic-gradient()repeating-linear-gradient()repeating-radial-gradient()rgb()rotate()rotate3d()rotateX()rotateY()rotateZ()round()saturate()scale()scale3d()scaleX()scaleY()scaleZ()sepia()shape()sibling-count()sibling-index()sign()sin()skew()skewX()skewY()sqrt()steps()superellipse()symbols()tan()translate()translate3d()translateX()translateY()translateZ()type()url()var()xywh()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |