Le displayType "flex"
Props spécifiques au flex#
Les props propres au displayType="flex" sont les suivantes, et sont donc sans effet en displayType="grid" :
| Props | Type ou valeurs autorisées | Valeur par défaut |
|---|---|---|
| flexWrap | wrap, nowrap | wrap |
| childrenFlex | string OR number | initial |
- La props
flexWrappermet de remplir la propriété CSSflex-wrap: enwrap, les enfants reviennent à la ligne s'ils dépassent de l'espace disponible dans leur parent. Cette spécificité est particulièrement utile pour gérer l'affichage sur de petits écrans. - La props
childrenFlexpermet de remplir la propriété CSSflexappliquée sur les enfants directs de l'InternalGrid : par exemple, unchildrenFlexà1force chacun des enfants à prendre tout l'espace disponible dans la limite de la largeur du conteneur et de l'espace occupé par les autres enfants. Plus de détails sur la propriété CSSflex.
important
À l'heure actuelle, il n'existe pas de props permettant de modifier la propriété CSS flex-direction : l'InternalGrid en displayMode="flex" est toujours en flex-direction: row;.
Alignement des enfants#
Si le flex ne nécessite pas beaucoup de props, c'est parce que ce sont les alignements horizontal et vertical qui vont déterminer l'architecture du composant. Autant en mode grid les enfants sont alignés à l'intérieur de leur cellule, autant en mode flex ils sont alignés les uns par rapport aux autres dans leur parent.
Les enfants peuvent être alignés sur deux dimensions :
- Sur l'axe horizontal (x) avec
justifyContent, qui permet de remplir la propriété CSSjustify-content; - Sur l'axe vertical (y) avec
alignItems, qui permet de remplir la propriété CSSalign-itemscommune audisplayType="grid".
| Props | Type ou valeurs autorisées | Valeur par défaut |
|---|---|---|
| justifyContent | center, flex-start, flex-end, space-between | space-between |
| alignItems | stretch, center, flex-start, flex-end, baseline | flex-start |
important
En display: flex;, la propriété flex-direction désigne l'axe principal : le justify-content aligne les enfants sur l'axe principal tandis que le align-items aligne sur l'axe secondaire. Les indications de cette documentation quant à ces deux propriétés ne valent que pour un flex-direction: row;, qui est la seule valeur admise dans le composant InternalGrid (cf. le important précédent).
Les valeurs du justifyContent#
- Le
centercolle tous les enfants au centre de l'InternalGrid. - Le
flex-startcolle tous les enfants à gauche de l'InternalGrid. - Le
flex-endcolle tous les enfants à droite de l'InternalGrid. - Le
space-betweendistribue les enfants sur toute la largeur de l'InternalGrid : le premier enfant est collé à gauche, le dernier est collé à droite, et les autres sont espacés à intervalles réguliers en fonction de l'espace disponible.
Les valeurs du alignItems#
- Le
stretchétire les enfants sur toute la hauteur de l'InternalGrid. - Le
centercentre verticalement les enfants dans l'InternalGrid. - Le
flex-startcolle tous les enfants en haut de l'InternalGrid. - Le
flex-endcolle tous les enfants en bas de l'InternalGrid. - Le
baselinealigne les enfants à partir du texte qu'ils contiennent : avec des textes de différentes tailles, cette propriété est particulièrement utile pour que les différents textes semblent placés sur une même ligne de lecture.
caution
Ne pas confondre la props alignItems citée ci-dessus (qui contrôle l'alignement des enfants) avec la props align tout court (qui contrôle l'alignement de tout le composant InternalGrid par rapport à son parent).
Exemples#
InternalGrid par défaut#
Démo 🎉#
Tyrion
Cersei
Jaime
Jon
Daenerys
Targaryen
Code ⌨️#
InternalGrid en justifyContent="center"#
Démo 🎉#
Tyrion
Cersei
Jaime
Jon
Daenerys
Targaryen
Code ⌨️#
InternalGrid en alignItems="stretch"#
Démo 🎉#
Tyrion
Cersei
Jaime
Jon
Daenerys
Targaryen
Code ⌨️#
InternalGrid en alignItems="center"#
Démo 🎉#
Tyrion
Cersei
Jaime
Jon
Daenerys
Targaryen