Flexbox - Pecunia-App/pecunia-front GitHub Wiki
Flexbox
Les mixins flex
et flex-center
sont là pour simplifier ton code tout en gardant toute la puissance de flexbox.
La mixin flex-center
est un raccourci pour un élément horizontalement et verticalement. C'est l'une des opérations les plus courantes en CSS.
@mixin flex-center {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: $space-16;
}
Exemple d'utilisation
.content {
@include flex-center;
height: 100vh; // Hauteur de l'écran complet
}
La mixin flex
C'est un mixin flexible qui permet de configurer n'importe quelle propriété flexbox. On peut spécifier une seule ou toutes les propriétés.
@mixin flex($dir: null, $wrap: null, $justify: null, $align: null, $gap: null) {
display: flex;
@if $dir != null {
flex-direction: $dir;
}
@if $wrap != null {
flex-wrap: $wrap;
}
@if $justify != null {
justify-content: $justify;
}
@if $align != null {
align-items: $align;
}
@if $gap != null {
gap: size($gap);
}
}
Les paramètres en détail
-
$dir : Direction des éléments
row
(défaut) : éléments alignés horizontalementcolumn
: éléments alignés verticalementrow-reverse
,column-reverse
: ordre inversé
-
$wrap : Comment les éléments se comportent quand il n'y a plus de place
nowrap
(défaut) : reste sur une seule ligne, peut déborderwrap
: passe à la ligne suivante si besoinwrap-reverse
: passe à la ligne du bas vers le haut
-
$justify : Alignement horizontal (sur l'axe principal)
flex-start
(défaut) : éléments au débutcenter
: éléments au centreflex-end
: éléments à la finspace-between
: espacés avec les extrémités collées aux bordsspace-around
: espacés avec espace autour de chaque élémentspace-evenly
: espacés uniformément
-
$align : Alignement vertical (sur l'axe secondaire)
stretch
(défaut) : étirés pour occuper tout l'espacecenter
: centrésflex-start
: en haut/au débutflex-end
: en bas/à la finbaseline
: alignés sur la ligne de base du texte
-
$gap : Espace entre les éléments (utilise une clé du map spacing comme 'space-8', ou une valeur CSS)
- Exemple:
space-8
pour 8px d'espacement
- Exemple:
@include flex($gap: 'space-8'); // 8px (en rem)
@include flex($gap: 1.25rem);
- Une barre de navigation horizontale avec espace entre les éléments
.navbar {
@include flex($justify: space-between, $align: center);
padding: space-4 space-8;
}
- Une liste verticale d'éléments espacés
.menu-items {
@include flex($dir: column, $gap: space-8);
}
- Une grille d'images qui se réorganise automatiquement
.image-gallery {
@include flex($wrap: wrap, $gap: space-16, $justify: center);
}
- Un formulaire avec labels et champs alignés
.form-group {
@include flex($dir: column, $gap: space-4);
@include mq(tablet) {
// Change en horizontal sur tablette et +
@include flex($dir: row, $align: center, $gap: space-8);
}
}
L'avantage du null
En utilisant null
comme valeur par défaut, on peut spécifier uniquement les propriétés dont on a besoin. Les propriétés non spécifiées n'apparaîtront pas dans le CSS final, ce qui donne un code plus léger.
// Seulement direction et gap
.sidebar {
@include flex($dir: column, $gap: space-16);
}
// Génère seulement :
.sidebar {
display: flex;
flex-direction: column;
gap: 1rem;
}