Depuis sa sortie en 2017, CSS Grid est devenu une fonctionnalité essentielle pour les développeurs front-end. Cependant, il est souvent sous-estimé par rapport à son homologue, le display flex. Dans cet article, nous allons explorer pourquoi CSS Grid est sous-coté et pourquoi il est temps de lui donner une chance.
CrĂ©ation facile dâune grid đš
CSS Grid est une fonctionnalité puissante qui a été conçue pour faciliter la création de mises en page complexes. Avec CSS Grid, il est possible de créer des grilles à plusieurs colonnes et lignes en quelques lignes de code. Il suffit de définir une grille avec la propriété display: grid;
de définir le nombre de colonnes et de lignes avec grid-template-columns et grid-template-rows, et de placer les éléments dans la grille avec grid-column et grid-row.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 100px 200px;
}
.item {
grid-column: 1 / 3;
grid-row: 1 / 2;
}
Utilisation de repeat et de fractional unit đ
La fonction repeat en CSS Grid permet de définir rapidement un grand nombre de colonnes ou de lignes avec une syntaxe simple. Par exemple, grid-template-columns: repeat(5, 1fr)
dĂ©finit cinq colonnes Ă©gales avec une fraction dâespace disponible Ă©gale.
Les unitĂ©s fractionnelles (fr) permettent Ă©galement de diviser lâespace disponible entre les colonnes ou les lignes de maniĂšre Ă©gale. Par exemple, grid-template-columns: 1fr 2fr
dĂ©finit deux colonnes oĂč la deuxiĂšme colonne a le double dâespace que la premiĂšre.
.container {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
.item {
grid-column: 2 / 5;
}
Placement avec grid row et grid col đââïž
La propriété grid-column et grid-row permettent de placer facilement les éléments dans la grille en spécifiant les positions de début et de fin. Par exemple, grid-column: 2 / 4
place lâĂ©lĂ©ment dans la deuxiĂšme et la troisiĂšme colonne.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
.item {
grid-column: 2 / 3;
grid-row: 1 / 3;
}
Placement unitaire des Ă©lĂ©ments đ
La propriété grid-area permet de définir simultanément les propriétés grid-row et grid-column pour un élément. Cela permet de placer facilement un élément dans une position spécifique de la grille.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
}
.item {
grid-area: 2 / 3 / 4 / 4;
}
Max-content, min-content, autofill, autofit, minmax đ€
CSS Grid introduit également de nouvelles fonctions telles que minmax, max-content, min-content, autofill et autofit. Ces fonctions permettent de créer des mises en page avancées avec des tailles de colonnes dynamiques et des alignements de contenu.
La fonction minmax permet de définir une taille minimale et maximale pour une colonne ou une ligne. Par exemple, grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
dĂ©finit des colonnes de 100 pixels de largeur minimum, mais qui peuvent sâĂ©tendre jusquâĂ remplir lâespace disponible.
Les fonctions max-content et min-content permettent de dĂ©finir la taille maximale et minimale dâun Ă©lĂ©ment en fonction de son contenu.
Les fonctions autofill et autofit permettent de remplir lâespace disponible avec des colonnes ou des lignes. La diffĂ©rence entre les deux est que autofit ne crĂ©e pas de colonnes ou de lignes vides, tandis que autofill peut en crĂ©er.
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
Conclusion đ
En conclusion, CSS Grid est une fonctionnalitĂ© sous-cotĂ©e qui offre une grande flexibilitĂ© et une facilitĂ© de crĂ©ation de grilles. Bien quâil puisse sembler intimidant au dĂ©but, une fois que vous le maĂźtrisez, il peut vous faire gagner beaucoup de temps et amĂ©liorer considĂ©rablement votre mise en page.
Le display flex, quant à lui, est une fonctionnalité plus simple et plus facile à maßtriser. Cependant, il est beaucoup moins flexible que CSS Grid et ne permet pas de créer des grilles à plusieurs colonnes et lignes.
Nous espĂ©rons que cet article vous a donnĂ© envie dâessayer CSS Grid et de dĂ©couvrir tout ce quâil a Ă offrir !