overflow
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété raccourcie CSS overflow définit le comportement souhaité lorsque le contenu ne tient pas dans la boîte de remplissage (padding en anglais) de l'élément (dépassements) dans la direction horizontale et/ou verticale.
Exemple interactif
overflow: visible;
overflow: hidden;
overflow: clip;
overflow: scroll;
overflow: auto;
<section class="default-example" id="default-example">
<p id="example-element">
Le trimestre de la Saint-Michel vient de s'achever, et le Lord Chancelier
siège à Lincoln's Inn Hall. Le temps de novembre est implacable. Il y a
autant de boue dans les rues que si les eaux venaient à peine de se retirer
de la surface de la terre.
</p>
</section>
#example-element {
width: 15em;
height: 9em;
border: medium dotted;
padding: 0.75em;
text-align: left;
}
Propriétés constitutives
Cette propriété est un raccourci pour les propriétés CSS suivantes :
Syntaxe
/* Valeurs avec un mot-clé */
overflow: visible;
overflow: hidden;
overflow: clip;
overflow: scroll;
overflow: auto;
overflow: hidden visible;
/* Valeurs globales */
overflow: inherit;
overflow: initial;
overflow: revert;
overflow: revert-layer;
overflow: unset;
La propriété overflow est définie avec un ou deux mots-clés <overflow>. Si un seul mot-clé est défini, overflow-x et overflow-y sont définis avec la même valeur. Si deux mots-clés sont définis, la première valeur s'applique à overflow-x dans la direction horizontale et la seconde valeur s'applique à overflow-y dans la direction verticale.
Valeurs
visible-
Le contenu débordant n'est pas coupé et peut être visible en dehors de la boîte de remplissage de l'élément. La boîte de l'élément n'est pas un conteneur de défilement. C'est la valeur par défaut de la propriété
overflow. -
Le contenu débordant est coupé à la boîte de remplissage de l'élément. Il n'y a pas de barres de défilement, et le contenu coupé n'est pas visible (c'est-à-dire que le contenu coupé est masqué), mais le contenu existe toujours. Les agents utilisateurs n'ajoutent pas de barres de défilement et n'autorisent pas non plus les utilisateur·ice·s à voir le contenu en dehors de la zone coupée par des actions telles que le glissement sur un écran tactile ou l'utilisation de la molette de la souris. Le contenu peut être défilé par programmation (par exemple, en liant à un texte d'ancrage, en tabulant vers un élément masqué mais focalisable, ou en définissant la valeur de la propriété
scrollLeftou de la méthodescrollTo()), auquel cas la boîte de l'élément est un conteneur de défilement. clip-
Le contenu débordant est coupé à la bordure de découpe du débordement de l'élément, définie à l'aide de la propriété
overflow-clip-margin. En conséquence, le contenu déborde de la boîte de remplissage de l'élément de la valeur<length>deoverflow-clip-marginou de0pxsi elle n'est pas définie. Le contenu débordant en dehors de la zone découpée n'est pas visible, les agents utilisateurs n'ajoutent pas de barre de défilement et le défilement programmatique n'est pas non plus pris en charge. Aucun nouveau contexte de formatage n'est créé. Pour établir un contexte de formatage, utilisezoverflow: clipavecdisplay: flow-root. La boîte de l'élément n'est pas un conteneur de défilement. scroll-
Le contenu débordant est coupé à la boîte de remplissage de l'élément, et le contenu débordant peut être défilé dans la vue à l'aide de barres de défilement. Les agents utilisateurs affichent des barres de défilement que le contenu déborde ou non, donc dans les directions horizontale et verticale si la valeur s'applique aux deux directions. L'utilisation de ce mot-clé peut donc empêcher les barres de défilement d'apparaître et de disparaître lorsque le contenu change. Les imprimantes peuvent toujours imprimer le contenu débordant. La boîte de l'élément est un conteneur de défilement.
auto-
Le contenu débordant est coupé à la boîte de remplissage de l'élément, et le contenu débordant peut être défilé dans la vue à l'aide de barres de défilement. Contrairement à
scroll, les agents utilisateurs affichent des barres de défilement uniquement si le contenu déborde. Si le contenu tient dans la boîte de remplissage de l'élément, il ressemble àvisiblemais établit toujours un nouveau contexte de formatage. La boîte de l'élément est un conteneur de défilement.
Note :
La valeur de mot-clé overlay est une valeur héritée équivalente à auto. Avec overlay, les barres de défilement sont dessinées par-dessus le contenu au lieu de prendre de la place.
Description
Les options de débordement incluent la possibilité de masquer le contenu débordant, d'activer les barres de défilement pour visualiser le contenu débordant ou d'afficher le contenu s'écoulant en dehors de la boîte d'un élément dans la zone environnante, ainsi que des combinaisons de ces options.
Les nuances suivantes doivent être prises en compte lors de l'utilisation des différents mots-clés pour overflow :
- Définir une valeur autre que
visible(la valeur par défaut) ouclippouroverflowcrée un nouveau contexte de formatage de bloc. Cela est nécessaire pour des raisons techniques ; si un flottant intersecte avec un élément défilant, il réorganiserait de force le contenu après chaque étape de défilement, ce qui entraînerait une expérience de défilement lente. - Pour qu'un réglage de
overflowproduise l'effet souhaité, l'élément de niveau bloc doit avoir soit une hauteur définie (heightoumax-height) si le débordement est dans la direction verticale, une largeur définie (widthoumax-width) si le débordement est dans la direction horizontale, une taille de bloc définie (block-sizeoumax-block-size) si le débordement est dans la direction du bloc, ou une taille en ligne définie (inline-sizeoumax-inline-size) ouwhite-spacedéfinie surnowrapsi le débordement est dans la direction en ligne. - Définir overflow sur
visibledans une direction (c'est-à-direoverflow-xouoverflow-y) lorsqu'il n'est pas défini survisibleouclipdans l'autre direction entraîne le comportement de la valeurvisiblecommeauto. - Définir overflow sur
clipdans une direction lorsqu'il n'est pas défini survisibleouclipdans l'autre direction entraîne le comportement de la valeurclipcommehidden. - La propriété JavaScript
Element.scrollToppeut être utilisée pour faire défiler le contenu dans un conteneur de défilement, sauf lorsqueoverflowest défini surclip. - Définir
overflowsur des images et d'autres éléments remplacés fonctionne comme prévu dans les navigateurs qui prennent en charge le module CSS Overflow Level 4 ; dans les versions précédentes de la spécification, les éléments remplacés étaient toujours coupés au conteneur de délimitation. Voir Compatibilité des navigateurs pour les navigateurs pris en charge.
Définition formelle
| Valeur initiale | visible |
|---|---|
| Applicabilité | Conteneurs de type bloc, conteneurs flexibles et conteneurs de grille |
| Héritée | non |
| Valeur calculée | pour chaque propriété individuelle de la propriété raccourcie :
|
| Type d'animation | discrète |
Syntaxe formelle
overflow =
<'overflow-block'>{1,2}
<overflow-block> =
visible |
hidden |
clip |
scroll |
auto
Accessibilité
Une zone de contenu défilante n'est pas focalisable au clavier, elle ne peut donc pas être défilée par un utilisateur utilisant uniquement le clavier. Firefox et Chrome 132 et versions ultérieures font exception ; ils rendent les conteneurs de défilement focalisables par défaut.
Pour les autres navigateurs, pour permettre aux utilisateur·ice·s utilisant uniquement le clavier de faire défiler le conteneur, vous devrez attribuer un tabindex au conteneur en utilisant tabindex="0". Malheureusement, lorsqu'un lecteur d'écran rencontre ce point de tabulation, il peut ne pas avoir de contexte sur le conteneur et pourrait annoncer l'intégralité du contenu du conteneur. Pour atténuer cela, donnez au conteneur un rôle WAI-ARIA approprié (role="region", par exemple) et un nom accessible (avec aria-label ou aria-labelledby).
Exemples
>Démonstration des résultats des différents mots-clés overflow
HTML
<div>
<code>visible</code>
<p class="visible">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
<div>
<code>hidden</code>
<p class="hidden">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
<div>
<code>clip</code>
<p class="clip">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
<div>
<code>scroll</code>
<p class="scroll">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
<div>
<code>auto</code>
<p class="auto">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
<div>
<code>overlay</code>
<p class="overlay">
Maya Angelou : « J'ai appris que les gens oublieront ce que vous
avez dit, les gens oublieront ce que vous avez fait, mais les gens
n'oublieront jamais comment vous les avez fait se sentir. »
</p>
</div>
CSS
p.visible {
overflow: visible;
}
p.hidden {
overflow: hidden;
}
p.clip {
overflow: clip;
overflow-clip-margin: 1em;
}
p.scroll {
overflow: scroll;
}
p.auto {
overflow: auto;
}
p.overlay {
overflow: overlay;
}
Résultat
Spécifications
| Spécification |
|---|
| CSS Overflow Module Level 3> # propdef-overflow> |
| Scalable Vector Graphics (SVG) 2> # OverflowAndClipProperties> |
Compatibilité des navigateurs
Voir aussi
- Les propriétés
overflow-x,overflow-y - Les propriétés
overflow-block,overflow-clip-margin,overflow-inline - Les propriétés
clip,display,text-overflow,white-space - L'attribut SVG
overflow - Le module de débordement CSS
- Zones de défilement accessibles uniquement au clavier (angl.) sur adrianroselli.com (2022)