Width, inline-size et block-size.

width
inline-size
block-size

Résumé des caractéristiques de la propriété width

Description rapide
Définit la largeur de l'élément.
Statut
Standard
S'applique à
Tous les éléments du type bloc.
Utilisable sur
HTML, SVG
Valeurs prédéfinies
auto | min-content | max-content | fit-content
Pourcentages
Calculés par rapport à la largeur de l'élément parent.
Valeur initiale
auto
Héritée par défaut
Non.
Type d'animation
Computed value : lors d'une animation, la propriété width passe progressivement d'une valeur à une autre.
Module W3C
Module CSS - Dimensionnement des blocs
Références (W3C)
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: WD (document de travail)

Statut du document: WD (document de travail)

Statut du document: REC (recommandation)

Statut du document: DEPR (Ancienne spécification, déclarée obsolète)

Schéma syntaxique de width.

width - Syntax DiagramSyntax diagram of the width CSS property. See stylescss.free.fr for details. auto auto length length % % min-content min-content max-content max-content fit-content() fit-content()width:;width:;
Schéma syntaxique de la propriété width.
Les liens du schéma donnent accès à plus de détails.

Sur le schéma, les termes en gras sont les mots prédéfinis de CSS, les autres termes sont décrits ci-dessous :

  • length est une valeur numérique suivie d'une des unités de dimension.
  • % est un pourcentage calculé par rapport à la largeur de l'élément parent.

Description de la propriété width.

La propriété width définit la largeur de l'élément.

Cette propriété est dite "physique" car elle agit sur la largeur de l'élément quelque soit le mode d'écriture (les langues asiatiques par exemple s'écrivent du haut vers le bas).

Mode de calcul des dimensions.

Attention ! La propriété box-sizing modifie la façon de calculer les dimensions d'un élément :

Interaction entre box-sizing et width
La propriété width définit la largeur du contenu de l'élément, sass inclure les marges intérieures nil l'épaisseur de la bordure.
Interaction entre box-sizing et width
La propriété width définit la largeur de l'élément incluant les marges intérieures et l'épaisseur de la bordure.

Il faut également prendre en compte les propriétés min-width, max-width qui peuvent imposer des contraintes sur la largeur de l'élément, et qui sont prioritaires.

Prise en charge de la langue.

Afin de faciliter la gestion des langues non latines, deux propriétés permettent de définir les dimensions d'un élément relativement au mode d'écriture utilisé. Ce deux propriétés sont :

  • inline-size : dimension de l'élément dans la direction d'écriture des lignes. Pour les langues latines cette propriété définit la largeur.
  • block-size : dimension de l'élément dans la direction des blocs. Pour les langues latines cette propriété définit la hauteur de l'élément.

   

⮜───── width ─────⮞
La direction et le sens d'écriture de ce texte s'adaptent à la langue choisie.
⮜──── height ────⮞

Si vous souhaitez plus d'explications sur la gestion des langues non latines, reportez-vous au tutoriel concernant les modes d'écriture.

Valeurs pour width.

Les valeurs décrites ci-après s'appliquent aussi bien à la propriété width qu'à la propriété logique correspondante : inline-size ou block-size.

  • width: auto;

    Le navigateur détermine la largeur de l'élément. En général la largeur est égale à celle du parent moins les marges intérieures de ce dernier (padding), moins les marges de l'élément (margin). Sur l'exemple ci-dessous, un trait fin sépare les marges intérieures du parent et les marges de l'élément.

  • width: 150px;

    La largeur de l'élément est fixée à la dimension indiquée. C'est un nombre positif ou égal à 0, suivi d'une unité de dimension (voir les unités de dimension). En fonction de la valeur indiquée, l'élément peut déborder de son parent.

    Si la valeur est exprimée en pourcentages, ceux-ci sont calculés par rapport à la largeur du parent moins les marges intérieures de ce dernier.

  • width: min-content; width: max-content; width: fit-content; width: fit-content(d);

    Avec l'une de ces trois valeurs, la largeur de l'élément est déterminée d'après son contenu :

    • min-content : largeur du contenu après avoir ajouté le plus possible de retours à la ligne. Reportez-vous à la valeur min-content pour une description plus précise.
    • max-content : largeur du contenu sans retours à la ligne, sauf ceux qui sont explicitement écrits dans le code source (HTML). Voyez la page sur max-content pour une description complète.
    • La valeur fit-content ou la fonction du même nom devraient être acceptées, mais il a encore des problèmes de compatibilité avec la fonction. Avec fit-content, la largeur de l'élément est déterminée d'après son contenu, mais sans dépasser la place disponible ni la dimension d indiquée en paramètre de la fonction. Des retours à la ligne peuvent être insérés si la longueur du texte dépasse cette limite.
      Reportez-vous à la description de la valeur fit-content ou de la fonction fit-content() pour une description complète.
  • width: initial; (auto) width: inherit; width: revert; width: revertLayer; width: unset;

    Ces valeurs sont décrites plus en détail sur leur page respective : initial, inherit, revert, revert-layer, unset.

Animation de la propriété width.

La propriété width est parmi celles qui sont le plus souvent animées pour des effets visuels divers.

Ce texte se dévoile petit à petit

Manipulation des largeurs par programme.

Les exemples de code ci-dessous sont donnés avec la propriété width mais seront facilement transposables aux propriétés logiques équivalentes inline-size et block-size.

Changement de la valeur de width avec Javascript.

Deux syntaxes sont possibles.

Javascript
let el = document.getElementById('id'); el.style['width'] = '50%'; // ou let el = document.getElementById('id'); el.style.width = '50%';

Récupération de la valeur affectée à width avec Javascript.

Le code ci-dessous fonctionne si la propriété a été affectée directement à l'élément lui-même via son attribut style, et non pas en passant par un sélecteur CSS. Les valeurs affectées par le code ci-dessus sont également récupérables de cette façon.

Javascript
let el = document.getElementById('id'); let value = el.style['width']; // ou let el = document.getElementById('id'); let value = el.style.width;

Récupération de la valeur calculée de width.

La valeur calculée est celle qui résulte de l'évaluation des unités relatives (en particulier le pourcentage) et de la prise en compte éventuelle des valeurs héritées. A défaut, la valeur calculée sera la valeur initiale de la propriété, soit auto dans le cas de width.

Javascript
let el = document.getElementById('id'); let value = window.getComputedStyle(el).getPropertyValue('width');

Changement de la valeur de width avec JQuery.

JQuery

$('#id').css('width', '50%');

Récupération de la valeur calculée de width avec JQuery.

JQuery
let value = $('#id').css('width');

Autres exemples de code.

D'autres exemples de code Javascript interagissant avec les styles CSS sont donnés sur la page Javascript et CSS.

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété width et affichent ensuite soit la valeur telle qu'elle a été appliquée, soit la valeur calculée. Cette deuxième option permet de voir comment est sérialisée la valeur de width. On constate en particulier que toutes les unités sont converties en pixels.

Simulateur avec la propriété width.

Le simulateur ci-dessous permet de faire la différence entre les propriétés physiques, comme width, et les propriétés logiques comme inline-size qui s'adaptent au mode d'écriture de la langue utilisée.

Il peut être utile également pour se familiariser avec les unités de dimensions les moins courantes, comme vw, vh, vmin, etc. Voir les unités de dimension.


Mode d'écriture :

width :

inline-size :

Pour faire tenir ce texte dans la largeur de la page, le navigateur peut insérer ou non des retours à la ligne, suivant la valeur de la propriété width.

Prise en charge de width par les navigateurs.

Toutes ces propriétés sont correctement prises en charge par tous les navigateurs actuels. Cependant Internet Explorer ne traite pas les propriétés logiques (qui prennent en compte le sens d'écriture) mais IE n'est plus utilisé.

Colonne 1
Traitement correct par les navigateurs de la propriété physique width (qui ne prend pas en compte le mode d'écriture en fonction de la langue) pour définir la largeur de l'élément.
Colonne 2
Support de la propriété logique (qui prend en compte le mode d'écriture de la langue) inline-size pour définir la dimension d'un élément dans le sens des lignes.
Colonne 3
Support de la propriété logique (qui prend en compte le mode d'écriture de la langue) block-size pour définir la dimension d'un élément dans le sens des blocs.
1
Propriété
width
2
Propriété
inline-size
3
Propriété
block-size
Estimation de la prise en charge globale.
96%
95%
95%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Samsung Internet

Safari

Safari sur IOS

Opéra

Firefox pour Androïd

Chrome

Edge

Firefox

Androïd Brower

Chrome pour Androïd

KaiOS Browser

Opéra mini

Historique de la propriété width.

Voir aussi, concernant la dimension des éléments.

Les propriétés width, inline-size et block-size sont décrites dans le module CSS Box Sizing Module. De nombreuses autres définitions participent aux dimensions d'un élément.

Propriétés :

aspect-ratio
Définit le ratio entre la largeur et la hauteur de l'élément.
block-size
Définit la dimension d'un l'élément suivant la direction des blocs.
box-sizing
Définit le mode de calcul des dimensions de blocs : en incluant ou non les bordures et les marges intérieures.
contain-intrinsic-block-size
Définit la dimension de l'élément dans la direction des blocs, lorsque l'élément est confiné.
contain-intrinsic-height
Définit la hauteur intrinsèque de l'élément lorsque celui-ci est confiné.
contain-intrinsic-inline-size
Définit la dimension de l'élément dans la direction des lignes, lorsque l'élément est confiné.
contain-intrinsic-size
Définit les dimensions de l'élément (blocs et lignes) lorsque l'élément est confiné.
contain-intrinsic-width
Définit la largeur intrinsèque de l'élément lorsque celui-ci est confiné.
height
Définit la hauteur de l'élément.
inline-size
Définit la dimension de l'élément dans la direction des lignes.
max-height
Définit une limite à la hauteur maximale de l'élément.
max-width
Définit la largeur maximale de l'élément.
min-height
Définit la hauteur minimale de l'élément.
min-width
Définit la largeur minimale de l'élément.

Fonctions :

fit-content()
Calcule une dimension en fonction du contenu et de limites.

Valeurs:

fit-content
Calcule la dimension d'un élément en fonction de son contenu et de la place disponible.
max-content
Donne la dimension d'un texte sans insérer de retours à la ligne.
min-content
Donne la dimension d'un texte après avoir inséré le plus possible de retours à la ligne.