Propriété CSS grid-auto-rows
Utilisez la propriété CSS grid-auto-rows pour définir la taille des lignes. Découvrez les valeurs et essayez des exemples.
La propriété grid-auto-rows définit la taille (hauteur) des lignes de grille implicites — les lignes que le navigateur crée automatiquement lorsque des éléments sont placés au-delà des lignes que vous avez définies avec grid-template-rows. Elle n'a aucun effet sur les lignes explicites qui ont déjà une taille.
Cette page explique ce qu'est une ligne implicite, la liste complète des valeurs acceptées par grid-auto-rows, ainsi que des exemples exécutables pour chacune d'elles.
Lignes implicites vs. lignes explicites
Une grille possède deux types de pistes :
- Lignes explicites — celles que vous déclarez avec
grid-template-rows. Leur taille est fixée par cette déclaration. - Lignes implicites — les lignes supplémentaires que la grille génère à la demande. Elles apparaissent lorsqu'il y a plus d'éléments (ou des éléments placés plus bas) que les lignes explicites ne peuvent en contenir.
grid-template-rows dimensionne les lignes explicites ; grid-auto-rows dimensionne les lignes implicites. C'est la raison principale d'utiliser cette propriété : vous avez un nombre inconnu ou croissant de lignes (un fil d'actualité, une galerie, une liste) et vous souhaitez que chaque ligne créée automatiquement ait une hauteur cohérente au lieu de revenir à auto.
La direction dans laquelle les nouvelles lignes sont ajoutées est contrôlée par grid-auto-flow ; l'équivalent en colonnes de cette propriété est grid-auto-columns.
Cette propriété accepte les valeurs suivantes : auto, max-content, min-content, minmax(), une valeur <length>, une <percentage>, et une valeur flex (fr).
| Valeur initiale | auto |
|---|---|
| S'applique à | Conteneurs de grille. |
| Héritée | Non. |
| Animable | Oui. La taille des lignes est animable. |
| Version | CSS Grid Layout Module Level 1 |
| Syntaxe DOM | object.style.gridAutoRows = "40px"; |
Syntaxe
Syntaxe de la propriété CSS grid-auto-rows
grid-auto-rows: auto | max-content | min-content | <length> | <percentage> | <flex> | initial | inherit;Exemple de la propriété grid-auto-rows :
Exemple de la propriété CSS grid-auto-rows avec les valeurs auto et length
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box1 {
grid-area: 1 / 1 / 2 / 2;
}
.box2 {
grid-area: 1 / 2 / 2 / 3;
}
.box3 {
grid-area: 1 / 3 / 2 / 4;
}
.box4 {
grid-area: 2 / 1 / 3 / 2;
}
.box5 {
grid-area: 2 / 2 / 3 / 3;
}
.box6 {
grid-area: 2 / 3 / 3 / 4;
}
.auto-box1 {
grid-area: 1 / 1 / 2 / 2;
}
.auto-box2 {
grid-area: 1 / 2 / 2 / 3;
}
.auto-box3 {
grid-area: 1 / 3 / 2 / 4;
}
.auto-box4 {
grid-area: 2 / 1 / 3 / 2;
}
.auto-box5 {
grid-area: 2 / 2 / 3 / 3;
}
.auto-box6 {
grid-area: 2 / 3 / 3 / 4;
}
.grid-container {
display: grid;
grid-auto-rows: 100px;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #666;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
.auto-container {
display: grid;
grid-auto-rows: auto;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.auto-container > div {
background-color: #666;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
</style>
</head>
<body>
<h2>Grid-auto-rows property example</h2>
<h3>100 pixels</h3>
<div class="grid-container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
</div>
<h3>auto</h3>
<div class="auto-container">
<div class="auto-box1">1</div>
<div class="auto-box2">2</div>
<div class="auto-box3">3</div>
<div class="auto-box4">4</div>
<div class="auto-box5">5</div>
<div class="auto-box6">6</div>
</div>
</body>
</html>Résultat
Exemple de la propriété grid-auto-rows avec plusieurs valeurs
Exemple de la propriété CSS grid-auto-rows avec les valeurs length, percentage, auto, min-content et max-content
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box1 {
grid-area: 1 / 1 / 2 / 2;
}
.box2 {
grid-area: 1 / 2 / 2 / 3;
}
.box3 {
grid-area: 1 / 3 / 2 / 4;
}
.box4 {
grid-area: 2 / 1 / 3 / 2;
}
.box5 {
grid-area: 2 / 2 / 3 / 3;
}
.box6 {
grid-area: 2 / 3 / 3 / 4;
}
.grey-box1 {
grid-area: 1 / 1 / 2 / 2;
}
.grey-box2 {
grid-area: 1 / 2 / 2 / 3;
}
.grey-box3 {
grid-area: 1 / 3 / 2 / 4;
}
.grey-box4 {
grid-area: 2 / 1 / 3 / 2;
}
.grey-box5 {
grid-area: 2 / 2 / 3 / 3;
}
.grey-box6 {
grid-area: 2 / 3 / 3 / 4;
}
.auto-box1 {
grid-area: 1 / 1 / 2 / 2;
}
.auto-box2 {
grid-area: 1 / 2 / 2 / 3;
}
.auto-box3 {
grid-area: 1 / 3 / 2 / 4;
}
.auto-box4 {
grid-area: 2 / 1 / 3 / 2;
}
.auto-box5 {
grid-area: 2 / 2 / 3 / 3;
}
.auto-box6 {
grid-area: 2 / 3 / 3 / 4;
}
.min-box1 {
grid-area: 1 / 1 / 2 / 2;
}
.min-box2 {
grid-area: 1 / 2 / 2 / 3;
}
.min-box3 {
grid-area: 1 / 3 / 2 / 4;
}
.min-box4 {
grid-area: 2 / 1 / 3 / 2;
}
.min-box5 {
grid-area: 2 / 2 / 3 / 3;
}
.min-box6 {
grid-area: 2 / 3 / 3 / 4;
}
.max-box1 {
grid-area: 1 / 1 / 2 / 2;
}
.max-box2 {
grid-area: 1 / 2 / 2 / 3;
}
.max-box3 {
grid-area: 1 / 3 / 2 / 4;
}
.max-box4 {
grid-area: 2 / 1 / 3 / 2;
}
.max-box5 {
grid-area: 2 / 2 / 3 / 3;
}
.max-box6 {
grid-area: 2 / 3 / 3 / 4;
}
.grid-container {
display: grid;
grid-auto-rows: 150px;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #888;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.grey-container {
display: grid;
grid-auto-rows: 30%;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grey-container > div {
background-color: #888;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.auto-container {
display: grid;
grid-auto-rows: auto;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.auto-container > div {
background-color: #888;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.min-container {
display: grid;
grid-auto-rows: min-content;
gap: 10px;
background-color: #000;
padding: 10px;
}
.min-container > div {
background-color: #ccc;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.max-container {
display: grid;
grid-auto-rows: max-content;
gap: 10px;
background-color: #000;
padding: 10px;
}
.max-container > div {
background-color: #ccc;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
</style>
</head>
<body>
<h2>Grid-auto-rows property example</h2>
<p>Use the <strong>grid-auto-rows</strong> property to set a default size (height) for all rows.</p>
<h3>150 pixels</h3>
<div class="grid-container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
</div>
<h3>30%</h3>
<div class="grey-container">
<div class="grey-box1">1</div>
<div class="grey-box2">2</div>
<div class="grey-box3">3</div>
<div class="grey-box4">4</div>
<div class="grey-box5">5</div>
<div class="grey-box6">6</div>
</div>
<h3>auto</h3>
<div class="auto-container">
<div class="auto-box1">1</div>
<div class="auto-box2">2</div>
<div class="auto-box3">3</div>
<div class="auto-box4">4</div>
<div class="auto-box5">5</div>
<div class="auto-box6">6</div>
</div>
<h3>min-content</h3>
<div class="min-container">
<div class="min-box1">1</div>
<div class="min-box2">2</div>
<div class="min-box3">3</div>
<div class="min-box4">4</div>
<div class="min-box5">5</div>
<div class="min-box6">6</div>
</div>
<h3>max-content</h3>
<div class="max-container">
<div class="max-box1">1</div>
<div class="max-box2">2</div>
<div class="max-box3">3</div>
<div class="max-box4">4</div>
<div class="max-box5">5</div>
<div class="max-box6">6</div>
</div>
</body>
</html>Exemple de la propriété grid-auto-rows avec la valeur "minmax"
Exemple de la propriété grid-auto-rows avec une valeur minmax()
La fonction minmax(min, max) donne à chaque ligne implicite une hauteur flexible : elle ne rétrécit jamais en dessous de min et ne dépasse jamais max. Ici, chaque ligne automatique mesure au moins 90px de hauteur, mais pas plus de 4cm.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.box1 {
grid-area: 1 / 1 / 2 / 2;
}
.box2 {
grid-area: 1 / 2 / 2 / 3;
}
.box3 {
grid-area: 1 / 3 / 2 / 4;
}
.box4 {
grid-area: 2 / 1 / 3 / 2;
}
.box5 {
grid-area: 2 / 2 / 3 / 3;
}
.box6 {
grid-area: 2 / 3 / 3 / 4;
}
.minmax1 {
grid-area: 1 / 1 / 2 / 2;
}
.minmax2 {
grid-area: 1 / 2 / 2 / 3;
}
.minmax3 {
grid-area: 1 / 3 / 2 / 4;
}
.minmax4 {
grid-area: 2 / 1 / 3 / 2;
}
.minmax5 {
grid-area: 2 / 2 / 3 / 3;
}
.minmax6 {
grid-area: 2 / 3 / 3 / 4;
}
.grid-container {
display: grid;
grid-auto-rows: 100px;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #666;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
.minmax-container {
display: grid;
grid-auto-rows: minmax(90px, 4cm);
gap: 10px;
background-color: #cccccc;
padding: 10px;
}
.minmax-container > div {
background-color: #f5f5f5;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
</style>
</head>
<body>
<h2>Grid-auto-rows property example</h2>
<h3>100 pixels</h3>
<div class="grid-container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
</div>
<h3>minmax</h3>
<div class="minmax-container">
<div class="minmax1">1</div>
<div class="minmax2">2</div>
<div class="minmax3">3</div>
<div class="minmax4">4</div>
<div class="minmax5">5</div>
<div class="minmax6">6</div>
</div>
</body>
</html>Ici, grid-auto-rows définit une hauteur par défaut pour chaque ligne implicite, tandis que minmax() maintient cette hauteur flexible entre une borne inférieure et une borne supérieure.
Valeurs
| Valeur | Description | Essayer |
|---|---|---|
| auto | La taille de chaque ligne est déterminée par son contenu. C'est la valeur par défaut de la propriété. | Play it » |
| max-content | La taille de chaque ligne dépend de l'élément le plus grand de la ligne. | Play it » |
| min-content | La taille de chaque ligne dépend de l'élément le plus petit de la ligne. | Play it » |
| minmax(min, max) | La plage de taille est supérieure ou égale à « min » et inférieure ou égale à « max ». | Play it » |
<length> | La taille des lignes est spécifiée par une valeur de longueur. | Play it » |
<percentage> | La taille des lignes est spécifiée en pourcentages. | Play it » |
<flex> | Une dimension non négative avec l'unité « fr » qui spécifie le facteur flex de la piste. Chaque piste dimensionnée avec <flex> partage l'espace restant proportionnellement à son facteur flex. | |
| initial | Applique la valeur par défaut de la propriété. | |
| inherit | Hérite la propriété de son élément parent. |
Propriétés associées
grid-template-rows— dimensionne les lignes explicites ;grid-auto-rowsne dimensionne que les lignes créées au-delà d'elles.grid-auto-columns— l'équivalent pour les colonnes : dimensionne les colonnes implicites.grid-auto-flow— contrôle si la grille place automatiquement les éléments dans de nouvelles lignes ou de nouvelles colonnes.grid— le raccourci qui peut définir tout cela en même temps.