Grille avec grid
Cette recette a été publiée le
Cas étudié
Afficher des éléments (comme des cartes) sous forme de colonne de manière responsive.
Solution proposée
Il n'est pas nécessaire d'avoir recours à de grandes librairies telles que bootstrap pour avoir un système de colonnes,
très verbeuses dans le HTML à grands coups de classes. L'apparition et surtout le support grandissant de CSS grid par
les navigateurs nous permet maintenant de l'utiliser à grande échelle. L'avantage associé est sur la maintenabilité, où
une seule modification dans le CSS suffit à changer le nombre de colonnes, plutôt que plusieurs éléments avec une classe
de type col-sm-N
.
Les éléments suivants sont à définir :
--gap
: espace entre les éléments--max-column-count
: nombre maximum de colonnes--grid-item--min-width
: la largeur minimum des éléments à afficher
.container {
--gap: 1rem;
--max-column-count: 4;
--grid-item--min-width: 300px;
--max-number-of-gaps-in-row: calc(var(--max-column-count) - 1);
--total-gap-width: calc(var(--max-number-of-gaps-in-row) * var(--gap));
--grid-item--max-width: calc((100% - var(--total-gap-width)) / var(--max-column-count));
display: grid;
grid-template-columns: repeat(auto-fit, minmax(max(var(--grid-item--min-width), var(--grid-item--max-width)), 1fr));
gap: var(--gap);
}
<div class="container">
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
</div>