Justify-content - Propriété CSS

justify-content

Résumé des caractéristiques de la propriété justify-content

Description rapide
Définit le positionnement suivant l'axe principal dans un flex-box ou une grille.
Statut
Standard
Utilisable sur
HTML
Valeurs prédéfinies
normal | stretch | left | center | right | start | end | flex-start | flex-end | space-around | space-between | space-evenly
Pourcentages
Ne s'appliquent pas.
Valeur initiale
normal
Héritée par défaut
Non.
Type d'animation
Discrète : lors d'une animation, la propriété justify-content passe d'une valeur à l'autre sans transition.
Module W3C
Module CSS - Alignement des blocs
Références (W3C)
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: CR (document candidat à la recommandation)

Statut du document: CR (document candidat à la recommandation)

Statut du document: CR (document candidat à la recommandation)

Schéma de la syntaxe de justify-content.

Justify-content-flex property - Syntax diagramSyntax diagram of the justify-content-flex CSS property. See stylescss.free.fr for details. flex-start flex-start flex-end flex-end center center space-between space-between space-around space-around space-evenly space-evenlyjustify-content:;justify-content:;
Schéma syntaxique de la propriété justify-content
dans le contexte d'un flex-box
Les liens du schéma donnent accès à plus de détails
Justify-content-grid property - Syntax diagramSyntax diagram of the justify-content-grid CSS property. See stylescss.free.fr for details. normal normal stretch stretch space-between space-between space-around space-around space-evenly space-evenly safe safe unsafe unsafe start start end end center center left left right rightjustify-content:;justify-content:;
Schéma syntaxique de la propriété justify-content
dans le contexte d'une grille
Les liens du schéma donnent accès à plus de détails

Description de la propriété justify-content.

La propriété justify-content définit l'alignement des éléments dans un conteneur flex-box ou un conteneur grille.

Utilisation de justify-content sur un conteneur flex.

justify-content gère l'alignement des éléments suivant l'axe principal, qui est le plus souvent l'axe horizontal.
Rappel : pour un flex-box, l'axe principal et l'axe secondaire sont définis par la propriété flex-direction.

Utilisation de justify-content sur un conteneur grille.

Utilisée sur un container grille, justify-content définit le positionnement des colonnes dans le conteneur grille. Bien entendu, cela suppose que si la largeur totale des colonnes est inférieure à la largeur du conteneur grille.

Il convient de distinguer le positionnement des colonnes dans le conteneur (propriété justify-content dont on parle sur cette page) et le positionnement des éléments dans leur colonne (propriété justify-items).

Voici l'exemple d'une grille où les colonnes sont alignées sur le début du conteneur (justify-content:start) et les éléments sur la fin de leur colonne (justify-items:end).

Valeurs pour justify-content sur un conteneur flex-box.

  • justify-content: flex-start; justify-content: flex-end;

    Les éléments internes sont groupés au début ou à la fin du flex-box, compte tenu de la valeur de la propriété flex-direction.

    Valeurs flex-start et flex-end en fonction de flex-direction
    flex-directionflex-startflex-end
    rowA gaucheA droite
    row-reverseA droiteA gauche
    columnEn hautEn bas
    column-reverseEn basEn haut

    Voici deux exemples du résultat de la propriété justify-content avec la valeur flex-start.

    1
    2
    3
    4
    5
    6
    flex-direction:row;
    justify-content:flex-start;
    1
    2
    3
    4
    5
    6
    flex-direction:row-reverse;
    justify-content:flex-start;

    Remarque : les valeurs start et end sont généralement acceptées sur un flex-box, mais ne prennent pas en compte la direction d'écriture définie par flex-direction.
    Il en est de même pour les valeurs left et right qui positionnent les éléments sur la gauche ou la droite du conteneur flex, sans considérer la direction attribuée à ce conteneur.

  • justify-content: center;

    Les éléments internes d'un flex-box sont groupés au centre du conteneur suivant l'axe principal, sans ajout d'espaces entre eux, autres que les marges spécifiques à chacun des éléments.

    1
    2
    3
    4
    5
    6
    justify-content:center;
  • justify-content: space-between;

    Le premier élément est calé au début du conteneur, le dernier élément est à la fin du conteneur; l'espace restant est réparti également entre les autres éléments.

    space-between

  • justify-content: space-around;

    L'espace restant disponible dans le conteneur est réparti entre les éléments, en gardant un demi-espace avant le premier élément et un demi-espace après le dernier élément.

    space-around

  • justify-content: space-evenly;

    L'espace restant disponible dans le conteneur est réparti de façon égale entre les éléments, avant le premier élément, et après le dernier élément.

    space-evenly

Valeurs pour justify-content sur un conteneur grille.

  • justify-content: normal;

    La valeur normal est traitée comme la valeur start (voir plus loin).

    1
    2
    3
    4
    5
    6
    justify-content:normal;
  • justify-content: start; justify-content: end;

    Les colonnes sont groupées au début ou à la fin du conteneur grille.
    Rappelons que le positionnement des éléments dans leur colonne est géré par justify-items. Dans nos exemples, les éléments sont centrés dans leur colonne.

    1
    2
    3
    4
    5
    6
    justify-content:start;

    Remarque : les valeurs flex-start et flex-end sont généralement acceptées par les navigateurs, mais ces derniers les traitent comme start et end lorsqu'il s'agit dune grille.

  • justify-content: left; justify-content: right;

    Appliquées à un conteneur grille, ces valeurs sont équivalentes respectivement à start et à end.

    1
    2
    3
    4
    5
    6
    justify-content:left;
  • justify-content: center;

    Les colonnes sont groupées au centre du conteneur grille.

    1
    2
    3
    4
    5
    6
    justify-content:center;
  • justify-content: stretch;

    La valeur stretch provoque un élargissement des colonnes jusqu'au remplissage complet du conteneur grille.

    Attention ! Cette valeur ne produit un effet que si au moins une des colonnes a une largeur fixée à auto : les colonnes dont la largeur est fixée à une dimension précise ne sont pas modifiées. D'autre part, si la largeur de au moins une des colonnes a été définie avec l'unité fr, il ne reste pas de place disponible dans le conteneur. La valeur stretch appliquée à justify-content sera donc également sans effet.

    1
    2
    3
    4
    5
    6
    grid-template-columns:repeat(3, auto);
    justify-content:stretch;
  • justify-content: space-between;

    Les colonnes sont réparties sur la largeur du conteneur de la façon suivante : a première colonne est calée à gauche, la dernière est calée à droite, et l'espace restant est réparti de façon égale entre les colonnes intérieures.

    Si D est l'espace restant disponible dans le conteneur et n le nombre de colonnes, l'espace e entre les colonnes est calculé par la formule :
    Espace entre colonnes e = D / (n-1)

    Valeur space-between pour justify-content

  • justify-content: space-around;

    Les espaces entre les colonnes d'une grille, ainsi que les espaces avant la première colonne et après la dernière colonne sont ajustés pour emplir toute la place disponible, les espaces au début et à la fin étant deux fois moins larges que l'espace entre les colonnes.

    Espace entre les colonnes e = D / n
    Espace au début et à la fin e = D / 2n
    Avec D étant l'espace disponible et n le nombre de colonnes.

    Valeur space-around pour justify-content

  • justify-content: space-evenly;

    Les colonnes sont réparties sur la largeur du conteneur de façon à ce que les espaces entre les colonnes, et les espaces avant la première colonne ou après la dernière soient tous égaux.

    Si D est l'espace restant et n le nombre de colonnes, les espaces sont calculés par la formule :
    Espace e = D / (n+1)

    Valeur space-evenly pour justify-content

  • justify-content: safe ...; justify-content: unsafe ...;

    Les modificateurs safe et unsafe peuvent être ajoutés avant le mot clé définissant l'alignement lorsque ce denier est start, end, center, right ou left. Le rôle de safe est d'empêcher les débordements du mauvais côté.

    unsafe (par défaut) : l'alignement demandé est respecté même s'il provoque un débordement difficile à gérer.
    safe : si l'alignement demandé provoque un débordement du mauvais côté, alors l'élément est aligné comme avec start.

    Voici un exemple du "débordement du mauvais côté". La grille ci-dessous contient du code informatique. Ce genre de contenu ne peut pas accepter des retours à la ligne n'importe où. Les lignes débordent donc fréquemment de la place qui leur est impartie. Il est facile de prévoir une barre de défilement pour permettre la consultation du contenu masqué (voir la propriété overflow).
    Malheureusement, lorsque le débordement se produit du côté début de bloc, ou début de ligne, la barre de défilement ne permet pas de le faire apparaître le contenu masqué.

    Note : dans l'exemple les colonnes sont alignées sur la fin du conteneur (justify-content:end).

    for(var i=0; i<50; i++)
    if(valeur[i]>max) {max=valeur[i];}
    }
    align-content:end;

    Le modificateur safe autorise le navigateur à ne pas respecter scrupuleusement l'alignement demandé pour faire en sorte que le débordement se fasse du côté fin de bloc ou fin de ligne. Ce qui permet d'utiliser la barre de défilement.

    for(var i=0; i<50; i++)
    if(valeur[i]>max) {max=valeur[i];}
    }
    align-content:safe end;

Valeurs globales
(communes à toutes les propriétés)

justify-content: initial (normal) justify-content: inherit justify-content: revert justify-content: revertLayer justify-content: unset

Consultez les pages suivantes pour plus de détails : initial, inherit, revert, revert-layer, unset.

Exemple d'animation de justify-content.

La démo ci-dessous est une animation de justify-content, qui parcourt les principales valeurs de cette propriété.

1
2
3
4
5

Accéder à la propriété justify-content par programme.

Modifier la valeur de justify-content en Javascript.

En Javascript, voici comment modifier la valeur de justify-content pour un élément el. On voit que Javascript propose une syntaxe avec la notation typique de CSS, en kebab-case (un tiret pour séparer les mots), et une autre syntaxe avec la notation en camel-case (une majuscule pour séparer les mots).

Javascript
let el = document.getElementById('id'); el.style['justify-content'] = 'end'; // ou let el = document.getElementById('id'); el.style.justifyContent = 'end';

Lire en Javascript la valeur de justify-content.

La propriété doit avoir été affectée directement à l'élément lui-même via l'attribut style du HTML, et non pas en passant par un sélecteur CSS.

Javascript
let el = document.getElementById('id'); let value = el.style['justify-content']; // ou let el = document.getElementById('id'); let value = el.style.justifyContent;

Lire la valeur calculée de justify-content en Javascript.

La valeur calculée est prioritairement celle qui est affectée à l'élément, puis ce sera une valeur héritée. Enfin, en dernier recours, si aucune valeur n'est affectée, cela sera la valeur initiale de la propriété, soit normal.

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

Modifier la valeur de la propriété justify-content avec JQuery.

Comme en Javascript, on retrouve deux syntaxes possibles.

JQuery

$('#id').css('justify-content', 'end');
// ou
$('#id').css('justifyContent', 'end');

Lire la valeur calculée de la propriété justify-content avec JQuery.

La lecture de la propriété peut se faire avec le code suivant.

JQuery
let value = $('#id').css('justify-content');

Autres exemples.

D'autres exemples de code concernant la manipulation des propriétés CSS en Javascript et JQuery sont donnés sur la page Javascript et CSS.

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété justify-content 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 mémorisée (sérialisée) la valeur de justify-content, mais dans le cas de justify-content les valeurs affectée et calculée seront les mêmes.

Exemple interactif avec la propriété justify-content.


flex-direction : (conteneur flex seulement)

justify-content :

Flex-box
1
2
3
4
5
6
Grille
1
2
3
4
5
6

Compatibilité des navigateurs avec justify-content.

La propriété justify-content est bien reconnue par les navigateurs, aussi bien dans le contexte d'un conteneur grille que d'un conteneur flex. Les valeurs ajoutées récemment dans la norme sont maintenant bien reconnues également : space-evenly, start et end.

Colonne 1
Support de la propriété justify-content dans le contexte d'un conteneur flex-box.
Colonne 2
Support de la propriété justify-content dans le contexte d'un container grille.
Colonne 3
Support de la valeur space-evenly pour la propriété justify-content, dans le contexte d'un flex-box ou d'une grille.
Colonne 4
Support des valeurs start et end pour la propriété justify-content, dans le contexte d'un conteneur flex-box.
1
Propriété
justify-content
(flex-box)
2
Propriété
justify-content
(grille)
3
Valeur
space-evenly
4
Valeurs
start et end
Estimation de la prise en charge globale.
96%
95%
96%
94%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

QQ Browser

Safari sur IOS

Firefox pour Androïd

Opéra Mobile

Baidu Browser

KaiOS Browser

UC Browser pour Androïd

Opéra

Safari

Firefox

Chrome pour Androïd

Samsung Internet

Chrome

Edge

Androïd Brower

Opéra mini

Histoire de la propriété justify-content.

Autres propriétés de positionnement et d'alignement.

Les propriétés d'alignement, de positionnement et de dimensionnement des blocs sont regroupées dans le module CSS Box Alignment Module, aussi bien pour les flex-box, que les grilles ou les conteneurs multi-colonnes.

Propriétés :

align-content
Gère la disposition des éléments dans un flex-box ou une grille, suivant l'axe secondaire.
align-items
Disposition verticale des éléments dans un flex-box ou une grille.
align-self
Position verticale de l'un des éléments dans un flex-box ou une grille.
column-gap
Définit l'espacement entre les colonnes.
gap
Définit les espacements entre les lignes et entre les colonnes dans le contexte d'une grille, d'un flex-box, ou d'une mise en page sur plusieurs colonnes)
grid-column-gap
Spécifie l'espacement entre les colonnes dans une grille.
grid-gap
Ajuste l'espacement des lignes et des colonnes dans le contexte d'une grille.
grid-row-gap
Spécifie l'espacement entre les lignes dans une grille.
justify-items
Gère l'alignement horizontal des éléments dans un conteneur grille.
justify-self
Définit le positionnement horizontal d'un élément particulier dans un flex-box ou une grille.
place-content
Disposition des éléments dans un flex-box ou une grille.
place-items
Défini le placement des éléments dans leur cellule (dans le contexte d'une grille).
place-self
Définit l'alignement d'un élément aussi bien dans la direction inline que dans la direction block.
row-gap
Définit l'espace entre les lignes d'une grille.