Align-items - Propriété CSS

align-items

Résumé des caractéristiques de la propriété align-items

Description rapide
Gère la disposition des éléments dans une grille suivant l'axe secondaire (vertical le plus souvent).
Statut
Standard
Utilisable sur
HTML
Valeurs prédéfinies
normal | stretch | center | start | end | flex-start | flex-end | self-start | self-end | baseline | first baseline | last baseline
Pourcentages
Ne s'appliquent pas.
Valeur initiale
normal
Héritée par défaut
Non.
Discrète : lors d'une animation, la propriété align-items passe d'une valeur à l'autre sans transition.
Per grammar : sérialisation dans l'ordre de la syntaxe.
Module W3C
Module CSS - Alignement des blocs
 🡇  
 🡅  
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 align-items.

align-items - Syntax DiagramSyntax diagram of the align-items CSS property. normal normal stretch stretch first* first* last last unsafe* unsafe* safe safe baseline baseline start start center center end end self-end self-end self-start self-startalign-items:;align-items:;
Schéma syntaxique de la propriété align-items.
Cliquez sur les liens du schéma pour plus de précisons sur les valeurs.
Télécharger le schéma en SVG

* indique une valeur par défaut, qui peut être omise.

Description de la propriété align-items.

align-items est une propriété CSS, qui gère le positionnement des éléments dans un container flex ou dans une cellule de grille. Cet alignement prend en compte la direction de remplissage du contenu flex, et la direction et le sens d'écriture de la langue utilisée. Il est important de noter que ce positionnement se fait par rapport à la ligne, cette dernière étant elle même positionnée par rapport au conteneur avec la propriété align-content.

Application à un flex-box.

La propriété align-items gère la disposition des enfants dans un flex box, suivant l'axe secondaire. La plupart du temps (pour les langues latines) il s'agira de l'axe vertical. Rappel : l'axe secondaire et l'axe principal d'un flex-box sont définis par la propriété flex-direction.

Pour gérer la disposition de chacun des enfants de façon indépendante, reportez-vous à la propriété align-self.

Application à une grille.

La propriété align-items gère la disposition verticale des éléments par rapport à la hauteur de leur ligne. Pour gérer la disposition des lignes elles-même, reportez-vous à la propriété align-content.

Autres propriétés à connaître.

Ces propriétés concernent toutes le positionnement des éléments dans une grille.

Définit le positionnement dans un flex-box ou une grille suivant l'axe principal (le plus souvent horizontal).
Gère l'alignement des éléments dans un conteneur grille suivant l'axe principal, qui est le plus souvent horizontal.
Définit le positionnement d'un élément particulier dans un flex-box ou une grille suivant l'axe principal, qui souvent horizontal.
Gère la disposition des éléments dans un flex-box ou une grille, suivant l'axe secondaire (le plus souvent vertical).
Gère la disposition de l'un des éléments dans une grille suivant l'axe secondaire, qui est le plus souvent vertical.
Gère la disposition des éléments dans un flex-box ou une grille suivant l'axe principal et l'axe secondaire.
Définit le placement des éléments dans leur cellule (dans le contexte d'une grille) suivant les deux axes (principal et secondaire).
Définit l'alignement d'un élément aussi bien suivant l'axe principal et suivant l'axe secondaire.

Valeurs pour align-items.

  • align-items: stretch;

    Les éléments sont étirés pour remplir toute la hauteur des lignes.

    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    justify-items:stretch;
  • align-items: center;

    Les éléments sont centrés dans leur ligne.

    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    justify-items:center;
  • align-items: flex-start; align-items: start;

    Ces deux valeurs sont traitées de la même façon par les navigateurs : les éléments sont positionnés au début de leur ligne. La plupart du temps (pour les langues latines) il s'agira du haut de la ligne, mais cela peut aussi être le bas pour d'autres langues. La langue prise en compte est celle indiquée pour le conteneur flex ou grille.

    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    justify-items:start;
  • align-items: flex-end; align-items: end;

    Ces deux valeurs sont équivalentes : les éléments sont positionnés à la fin de leur ligne. Comme pour start la notion de fin dépend de la langue du texte, mais pour les langues latines, cela correspond au bas de la ligne. La langue considérée est celle du conteneur.

    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    justify-items:end;
  • align-items: baseline; align-items: first baseline; align-items: last baseline;

    Les éléments sont alignés verticalement par rapport à la ligne de base du texte.

    Si last est précisé, c'est la ligne de base de la dernière ligne qui sert de référence. On peut préciser first mais c'est la valeur par défaut : first baseline est équivalent à baseline.

    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa

    justify-items:baseline;
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa
    Aaaa

    justify-items:last baseline;

    La ligne de base d'un texte est située à la base des lettres sans jambage.

    baseline : position de la ligne de base d'un texte

  • align-items: safe center; align-items: unsafe center;

    Les mots-clé safe et unsafe peuvent être ajoutés avant les valeurs start, end ou center. Ils servent à résoudre le problème du débordement par le haut. Lorsque qu'un élément contient trop de contenu pour la place disponible, ce contenu peut être en partie masqué. S'il est centré ou aligné par le bas, le débordement peut se faire par le haut de l'élément (c'est le début du texte qui est masqué). Dans ce cas, même l'ajout d'une barre de défilement ne permettra pas d'afficher la partie du contenu qui est masquée.

    Avec le mot safe le navigateur placera toujours les débordements de contenu vers le bas, quitte à ne pas respecter scrupuleusement l'alignement demandé. La valeur unsafe au contraire impose que l'alignement soit respecté, même si cela provoque un débordement vers le haut.

    Cet élément, relativement grand, s'étend sur plusieurs lignes et déborde le haut du container. La première ligne de son texte n'est pas accessible.
    Ce deuxième élément est plus petit et peut être affiché en entier (pas de problème).

    align-items:unsafe center;

    Cet élément déborde le hauteur du container. Malgré tout il est entièrement affichable en utilisant la barre de défilement, y compris les premières lignes.
    Ce deuxième élément est plus petit et peut être affiché en entier (pas de problème).

    align-items:safe center;

    unsafe étant la valeur par défaut, elle est rarement indiquée.

  • align-items: initial; (normal) align-items: inherit; align-items: revert; align-items: revertLayer; align-items: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Accéder à la propriété align-items par programme.

Modifier la valeur de align-items en Javascript.

En Javascript, voici comment modifier la valeur de align-items. Javascript accepte deux syntaxes; une avec la notation typique de CSS, en kebab-case (un tiret pour séparer les mots), et une autre avec la notation en camel-case habituelle en Javascript (une majuscule pour séparer les mots).

Javascript
let el = document.getElementById('id'); el.style['align-items'] = 'center'; // ou let el = document.getElementById('id'); el.style.alignItems = 'center';

Lire en Javascript la valeur de align-items.

La propriété doit avoir été affectée directement à l'élément lui-même et pas en passant par un sélecteur. La valeur est renvoyée telle qu'elle a été définie.

Javascript
let el = document.getElementById('id'); let value = el.style['align-items']; // ou let el = document.getElementById('id'); let value = el.style.alignItems;

Lire la valeur calculée de align-items en Javascript.

La valeur calculée est soit la valeur affectée dans la feuille de styles (ou ans l'attribut style), soit la valeur déterminée en considérant les héritages éventuels et les priorités. A défaut, ce sera la valeur initiale de la propriété (normal dans le cas de align-items).

Dans le cas de align-items, la valeur est retournée sous la forme de l'une des valeurs prédéfinies acceptées par la propriété.

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

Modifier la valeur de la propriété align-items avec JQuery.

Deux syntaxes (très peu différentes) sont possibles en JQuery.

JQuery

$('#id').css('align-items', 'center');
// ou
$('#id').css('alignItems', 'center');

Lire la valeur calculée de la propriété align-items avec JQuery.

JQuery
let value = $('#id').css('align-items');

Testez par vous même.

Ce petit simulateur vous permet de tester vous même l'affectation de la propriété align-items et la restitution de sa valeur telle qu'elle a été attribuée (premier bouton) ou de sa valeur calculée (deuxième bouton).

Simulateur de align-items sur un flex-box et une grille.

Notre simulateur permet de voir l'effet de la propriété align-items sur un container flex et sur un container grille. En principe, les valeurs flex-start et flex-end sont plutôt réservées aux containers flex, mais on constate que la plupart des navigateurs les traitent également dans le cas d'une grille.
Les tailles de police sont différentes entre les éléments, afin d'illustrer le comportement des valeurs baseline.


flex-direction : (pour le conteneur flex uniquement)

align-items :

Flex-box
1
2
(pour first)
3
Grille
1
2
(pour first)
3
4
5
6

Compatibilité des navigateurs avec align-items.

La propriété align-items est maintenant bien reconnue par tous les navigateurs récents, aussi bien dans le contexte d'un flex-box que dans celui d'une grille.

Colonne 1
Prise en charge de la propriété align-items dans le contexte d'un conteneur flex-box.
Colonne 2
Prise en charge de la propriété align-items dans le contexte d'un conteneur grille.

Remarques :

(1) Dans Internet Explorer 10 et 11, si les éléments flexibles ont align-items:center et que leur contenu est trop volumineux, ils déborderont des limites de leur conteneur.

1
Propriété
align-items
(Flex-box)
2
Propriété
align-items
(Grille)
Estimation de la prise en charge globale.
96%
96%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Edge

Opéra

Safari

Safari sur IOS

Androïd Brower

Chrome pour Androïd

Firefox pour Androïd

Samsung Internet

Firefox

Chrome

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini

Histoire de la propriété align-items.

La propriété align-items a tout d'abord été décrire dans les spécifications relatives aux grilles ou au flex-box. Mais une spécification spécifique aux alignements des blocs a ensuite été créée.

  • Module CSS - Mise en page par flex-box - Niveau 1

    Concernant align-items. Première spécification concernant les flex-box et première description de la propriété align-items.
    WD
    23 Juillet 2009
    Document de travail.
    CR
    18 Septembre 2012
    Candidat à la recommandation.
    PR
    REC
  • Module CSS - Mise en page par grille - Niveau 1

    Cette spécification définit comment réaliser des mises en page sous frome de grilles, composées de lignes et de colonnes, avec une structure du document qui reste très simple : un conteneur et autant d'éléments que de cellules. Beaucoup plus simple en tout cas que les tableaux.
    Chacune des cellules peut être alignée horizontalement dans le largeur des colonnes, ou verticalement dans la hauteur des lignes. Elles peuvent aussi être réparties ou agrandies pour couvrir toute la place disponible. Le contenu de chacune des cellules peut être aligné horizontalement et verticalement.
    Une nouvelle unité (fr) est disponible pour dimensionner les colonnes ou les lignes.

    Concernant align-items. Première spécification relative aux grilles, et introduction de la propriété align-items.
    WD
    07 Avril 2011
    Document de travail.
    CR
    29 Septembre 2016
    Candidat à la recommandation.
    PR
    REC
  • Module CSS - Mise en page par grille - Niveau 2

    Ce niveau 2 de la spécification sur les grilles introduit la notion de sous-grille. Il s'agit de grille imbriquées dans une autre, avec conservation des alignement de colonnes et/ou de lignes.

    Concernant align-items. Pas de changement concernant la propriété align-items.
    WD
    06 Février 2018
    Document de travail.
    CR
    18 Août 2020
    Candidat à la recommandation.
    PR
    REC
  • Module CSS - Alignement des blocs - Niveau 3

    Concernant align-items. Création d'un module de spécification spécifique aux alignement. La description de la propriété align-items est transférée dans ce module.
    WD
    12 Juin 2012
    Document de travail.
    CR
    PR
    REC

Autres propriétés relatives à l'alignement des blocs.

Propriétés :

align-content
Gère la disposition des éléments dans un flex-box ou une grille, suivant l'axe secondaire (le plus souvent vertical).
Align-items
Gère la disposition des éléments dans une grille suivant l'axe secondaire (vertical le plus souvent).
align-self
Gère la disposition de l'un des éléments dans une grille suivant l'axe secondaire, qui est le plus souvent vertical.
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-content
Définit le positionnement dans un flex-box ou une grille suivant l'axe principal (le plus souvent horizontal).
justify-items
Gère l'alignement des éléments dans un conteneur grille suivant l'axe principal, qui est le plus souvent horizontal.
justify-self
Définit le positionnement d'un élément particulier dans un flex-box ou une grille suivant l'axe principal, qui souvent horizontal.
place-content
Gère la disposition des éléments dans un flex-box ou une grille suivant l'axe principal et l'axe secondaire.
place-items
Définit le placement des éléments dans leur cellule (dans le contexte d'une grille) suivant les deux axes (principal et secondaire).
place-self
Définit l'alignement d'un élément aussi bien suivant l'axe principal et suivant l'axe secondaire.
row-gap
Définit l'espace entre les lignes d'une grille.