Align-self - Propriété CSS
Résumé des caractéristiques de la propriété align-self
auto | normal | stretch | center | start | end | flex-start | flex-end | baseline | first baseline | last baselineautoalign-self passe d'une valeur à l'autre sans transition.Per grammar : sérialisation dans l'ordre de la syntaxe.Schéma de la syntaxe de align-self.
align-self.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-self.
align-self est une propriété CSS. Elle gère l'alignement d'un des éléments internes dans un container flexible ou dans une grille.
Elle permet de gérer l'alignement élément par élément, contrairement aux propriétés align-content et align-items, qui agissent sur
tous les éléments.
Appliqué à un élément dans un flex-box, la propriété align-self gère la position de cet élément suivant l'axe secondaire.
La plupart du temps, pour les langues latines, il s'agira de l'axe vertical.
Rappel : le choix de l'axe principal et secondaire dans un flex-box est défini par le propriété flex-direction.
Appliqué à un élément dans une grille, align-self gère la position de cet élément dans sa cellule, suivant l'axe des lignes (vertical).
Pour une présentation détaillée des possibilités des flex-box ou des grilles, reportez-vous aux pages flex et grid.
Autres propriétés à connaître.
Ces propriétés concernent toutes le positionnement des éléments.
Valeurs pour align-self.
Dans les explications ci-dessous, nous avons considéré que l'axe principal du flex-box est l'axe horizontal. L'axe secondaire est donc l'axe vertical. Cette disposition est la plus courante pour les langues latines.
- align-self: auto;
L'élément est positionné comme tous les autres, conformément à la propriété
align-itemsdu container flex-box.AaAaAaAaAaAa - align-self: stretch;
L'élément est étiré pour remplir toute la hauteur de la ligne. Pour que l'effet soit bien visible, la propriété
align-itemsdu conteneur a été positionnée la valeurstart.AaAaAaAaAaAa - align-self: center;
L'élément est centré verticalement dans sa ligne.
AaAaAaAaAaAa - align-self: flex-start; align-self: start;
L'élément est positionné en haut de sa ligne.
La première valeur est plutôt adaptée au container du type flex-box, tandis que la deuxième est plutôt réservée aux grilles mais les navigateurs ne font pas de différences.AaAaAaAaAaAa - align-self: flex-end; align-self: end;
L'élément est positionné en bas de sa ligne.
La première valeur est plutôt adaptée au container du type flex-box, tandis que la deuxième est plutôt réservée aux grilles mais les navigateurs ne font pas de différences.AaAaAaAaAaAa - align-self: self-start; align-self: self-end;
L'élément est positionné en bas ou en haut de la hauteur de sa ligne, compte tenu de ses propres paramètres d'écriture.
Les deux éléments verts ci-dessous ont leur propriété
align-selffixée surstart, les deux ont un mode d'écriture vertical, mais le deuxième à sens d'écriture du bas vers le haut. Cela impacte leur positionnement./* Styles du 1er élément */ /* Styles du 2ème élément */ writing-mode:vertical-rl; writing-mode:vertical-rl; direction:ltr; direction:rtl; align-self:self-start; align-self:self-start;AaAaAaAaAaAa - align-self: baseline; align-self: first baseline; align-self: last baseline;
L'élément est positionné verticalement par rapport à la ligne de base du texte.
Dans la mesure oùalign-selfs'applique à des éléments individuels du flex box ou de la grille, la valeurbaselinene donne le résultat escompté que si au moins deux éléments de la ligne sont alignés suivant cette valeur.
Dans l'exemple ci-dessous les trois premiers éléments sont alignés sur la ligne de base du texte (
align-self:baseline). Le premier exemple aligne sur la première ligne, et le deuxième exemple sur la dernière ligne. On constate effectivement que, malgré leurs tailles de caractères différentes, et leurs marges intérieures (padding) également différentes, les lignes de base des textes sont alignées.Aa1
Aa2
Aa3Aa
AaAaAaAaAaalign-self:first baseline;Aa1
Aa2
Aa3Aa
AaAaAaAaAaalign-self:last baseline; - align-self: safe center; align-self: unsafe end;
Les mots
safeetunsafepeuvent être associés à un alignement du typecenterouend(unsafeétant par défaut, il est rare qu'on le précise).safepermet de résoudre le problème du débordement par le haut : si le contenu est trop grand pour la place disponible, il peut se retrouver masqué. Si l'élément est centré ou aligné par le bas, ce 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 la barre de défilement ne permettra pas d'afficher la partie du contenu qui est masquée.Avec le mot
safele navigateur placera toujours les débordements de contenu vers le bas, quitte à ne pas respecter scrupuleusement l'alignement demandé. La valeurunsafeau contraire impose que l'alignement soit respecté, même si cela provoque un débordement vers le haut.Pour que le fonctionnement soit correct, il faut également appliquer
safesur le container avecalign-content.Aa1
Aa2
Aa3
Aa4
Aa5
Aa6
Aa7Aa
AaAaAaAaAaIllustration du problème
de débordement par le haut.Aa1
Aa2
Aa3
Aa4
Aa5
Aa6
Aa7Aa
AaAaAaAaAaRésolution du problème avec
align-content:safe end;sur le containeralign-items:safe end;sur les éléments - align-self: initial; (
auto) align-self: inherit; align-self: revert; align-self: revertLayer; align-self: unset;Les valeurs communes sont présentées sur ces pages :
initial,inherit,revert,revert-layer,unset.
Exemple d'animation de align-self.
La propriété align-self est du type discrete, ce qui veut dire que les animations la font passer brutalement d'une valeur à l'autre.
Accéder à la propriété align-self par programme.
Forcer la valeur de align-self en Javascript.
Javascript propose une syntaxe avec la notation 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).

let el = document.getElementById('id');
el.style['align-self'] = 'center';
// ou
let el = document.getElementById('id');
el.style.alignSelf = 'center';
Relire en Javascript la valeur de align-self.
La propriété doit avoir été affectée directement à l'élément lui-même et pas en passant par un sélecteur.
Autrement dit, ce code explore l'attribut style de l'élément.
La valeur est renvoyée telle qu'elle a été définie : une des valeurs acceptées par la propriété.

let el = document.getElementById('id');
let value = el.style['align-self'];
// ou
let el = document.getElementById('id');
let value = el.style.alignSelf;
Lire la valeur calculée de align-self en Javascript.
La valeur calculée est celle qui a été affectée à l'élément, soit directement, soit via un sélecteur, ou celle qui résulte du mécanisme d'héritage.
A défaut e sera la valeur initiale de la propriété : auto dans le cas de align-self.

let el = document.getElementById('id');
let value = window.getComputedStyle(el).getPropertyValue('align-self');
Modifier la propriété align-self avec JQuery.
JQuery propose également une syntaxe (plus courte que celle de Javascript) pour lire et écrire la propriété.

$('#id').css('align-self', 'center');
// ou
$('#id').css('alignSelf', 'center');
Lire la valeur calculée avec JQuery.

let value = $('#id').css('align-self');
Testez vous-même.
Les boutons ci-dessous appliquent la valeur saisie à la propriété align-self 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 align-self.
Ceci dit, dans le cas de align-self, cela ne fera pas une grande différence.
Utilisation de align-self sur un flex-box et une grille.
Le simulateur ci-dessous ajuste la propriété align-self des blocs n° 2 et n° 3 (encadrés en rouge),
aussi bien dans le flex-box (premier exemple) que dans la grille (deuxième exemple).
Les tailles des polices de chacun des éléments sont différentes pour bien montrer l'effet de la valeur baseline.
flex-direction : (pour le flex box).
Compatibilité des navigateurs avec align-self.
align-self dans le contexte d'un conteneur flex-box.align-self dans le contexte d'une grille.start et end pour la propriété align-self.Remarques :
(1) Internet Explorer 10 et 11 utilisent la propriété -ms-grid-row-align qui fonctionne d'une façon comparable à align-self.
align-self(flex-box)
align-self(grille)
start et endNavigateurs 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-self.
Les propriétés d'alignement (dont align-self) ont été introduites dans les spécifications concernant les grilles et les flex-box.
Un module spécifique aux alignements a ensuite été ajouté. Il reprend les descriptions de toutes les propriétés relatives aux alignements des blocs.
-
Module CSS - Mise en page par flex-box - Niveau 1
Définition initiale de la propriétéalign-selfdans le contexte d'un flex-box.23 Juillet 2009Document de travail.18 Septembre 2012Candidat à la recommandation. -
Module CSS - Mise en page par grille - Niveau 1
Définition initiale de la propriétéalign-selfdans le contexte d'une grille.07 Avril 2011Document de travail.29 Septembre 2016Candidat à la recommandation. -
Module CSS - Mise en page par grille - Niveau 2
Pas de changement concernant directement la propriétéalign-self.06 Février 2018Document de travail.18 Août 2020Candidat à la recommandation. -
Module CSS - Alignement des blocs - Niveau 3
La description de la propriétéalign-selfest transférée dans ce module de la norme.12 Juin 2012Document de travail.
Autres propriétés du module CSS - Alignement des blocs.



