Notes techniques de zhaoJian

Cours IT Bases CSS 031_Mise en page grille Grid

Apprentissage / Bases CSS ~13071 mots · 33 min de lecture - vues

Mise en page grille Grid

Une grille est constituée d’une série de lignes horizontales et verticales formant un motif de mise en page. En se basant sur la grille, nous pouvons organiser les éléments de conception, nous aidant à concevoir une série de pages avec des éléments de position et de largeur fixes, rendant nos pages web plus uniformes.

Une grille comporte généralement de nombreuses colonnes (columns) et lignes (rows), ainsi que des espaces entre les lignes et les colonnes, cet espace est généralement appelé gouttière (gutter).

Effet de l'exemple

Concepts de base

La mise en page Grid est composée des concepts de base suivants :

  • Conteneur de grille (grid container) : La mise en page de grille est composée de conteneurs de grille et d’éléments de grille. Le conteneur de grille est le conteneur qui place les éléments de grille dans la grille. Le conteneur de grille peut être n’importe quel élément, mais généralement on utilise l’élément div.
  • Élément de grille (grid item) : Les éléments de grille sont des éléments placés dans le conteneur de grille. Les éléments de grille peuvent être n’importe quel élément, mais généralement on utilise des éléments div.
  • Ligne de grille (grid line) : Les lignes de grille sont les lignes qui divisent le conteneur de grille en lignes et colonnes. Les lignes de grille peuvent être horizontales ou verticales.
  • Colonne de grille (grid column) : Les colonnes de grille sont des lignes verticales dans le conteneur de grille.
  • Ligne de grille (grid row) : Les lignes de grille sont des lignes horizontales dans le conteneur de grille.
Propriétés courantes

Propriétés du conteneur de grille

Le conteneur de grille possède les propriétés suivantes pour contrôler la mise en page de grille :

  • display : Définit le mode d’affichage du conteneur de grille. Le conteneur de grille doit être défini sur display: grid ou display: inline-grid pour utiliser la mise en page de grille.
  • grid-template-columns : Définit le nombre de colonnes et les largeurs de colonnes du conteneur de grille (en utilisant des unités comme fr, px, em, etc.).
  • grid-template-rows : Définit le nombre de lignes et les hauteurs de lignes du conteneur de grille (en utilisant des unités comme fr, px, em, etc.).
  • grid-template : Définit simultanément grid-template-columns et grid-template-rows.
  • grid-auto-columns : Définit les largeurs de colonnes du conteneur de grille.
  • grid-auto-rows : Définit les hauteurs de lignes du conteneur de grille.

Propriétés des éléments de grille

Les éléments de grille possèdent les propriétés suivantes pour contrôler la mise en page des éléments de grille dans la grille :

  • grid-column : Définit la colonne dans laquelle se trouve l’élément de grille.
  • grid-row : Définit la ligne dans laquelle se trouve l’élément de grille.
  • grid-column-start : Définit la position de départ de l’élément de grille dans la colonne.
  • grid-column-end : Définit la position de fin de l’élément de grille dans la colonne.
  • grid-row-start : Définit la position de départ de l’élément de grille dans la ligne.
  • grid-row-end : Définit la position de fin de l’élément de grille dans la ligne.
  • grid-area : Définit la zone dans laquelle se trouve l’élément de grille.
  • grid-gap : Définit l’espacement entre les lignes de grille.
Mise en page grille

Définir des largeurs de colonnes et hauteurs de lignes fixes et adaptatives

Exemple :

.grid-example{
display: grid;
grid-template-columns: 100px 200px auto;
/* Première colonne 100px, deuxième colonne 200px, espace restant alloué à la colonne adaptative */
grid-template-rows: 100px 200px auto;
/* Première ligne 100px, deuxième ligne 200px, espace restant alloué à la ligne adaptative */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
</div>

Effet :

Effet de l'exemple Utilisation de pourcentages pour définir les largeurs de colonnes et hauteurs de lignes

Exemple :

.grid-example{
display: grid;
grid-template-columns: 30% 2fr 1fr;
/* Première colonne occupe 30%, deuxième colonne occupe deux parts de l'espace restant, troisième colonne occupe une part de l'espace restant */
grid-template-rows: 30% 2fr 1fr;
/* Première ligne occupe 30%, deuxième ligne occupe deux parts de l'espace restant, troisième ligne occupe une part de l'espace restant */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
</div>

Effet :

Effet de l'exemple Division égale (répartition moyenne) des largeurs de colonnes et hauteurs de lignes

Exemple :

.grid-example{
display: grid;
grid-template-columns: repeat(3, 1fr);
/* Trois colonnes égales, chaque colonne occupe une part de l'espace restant */
grid-template-rows: repeat(3, 1fr);
/* Trois lignes égales, chaque ligne occupe une part de l'espace restant */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
</div>

Effet :

Effet de l'exemple Utilisation de minmax pour définir la largeur et hauteur minimales et maximales des colonnes et lignes

Exemple :

.grid-example{
display: grid;
grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr);
/* Première colonne largeur minimale 100px, occupe une part de l'espace restant ; deuxième colonne largeur minimale 200px, occupe deux parts de l'espace restant */
grid-template-rows: minmax(100px, 1fr) minmax(200px, 2fr);
/* Première ligne hauteur minimale 100px, occupe une part de l'espace restant ; deuxième ligne hauteur minimale 200px, occupe deux parts de l'espace restant */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
</div>

Effet :

Effet de l'exemple

Espacement de grille

L’espacement de grille est contrôlé par les deux propriétés grid-row-gap et grid-column-gap. De plus, CSS Grid Level 2 a introduit la propriété gap, qui peut contrôler simultanément grid-row-gap et grid-column-gap.

Exemple :

.grid-example{
display: grid;
grid-template-columns: 30% 30% 30%;
grid-template-rows: 200px 200px;
grid-row-gap: 50px; /* Espacement de lignes de 50px */
grid-column-gap: 30px; /* Espacement de colonnes de 30px */
/* gap: 50px 30px; Espacement de lignes de 50px, espacement de colonnes de 30px */
}
.item{
margin: 10px;
background-color: rgb(100, 150, 200);
}
<div class="grid-example">
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
<div class="item">Démonstration Grid</div>
</div>

Effet :

Effet de l'exemple

Positionnement de grille

Le positionnement de grille fait généralement référence à l’utilisation de propriétés telles que grid-column, grid-row et grid-area pour positionner les éléments dans la mise en page de grille. Ces propriétés sont utilisées pour spécifier les colonnes et les lignes qu’un élément occupe dans la grille, ou pour spécifier directement la zone dans laquelle se trouve l’élément.

  • grid-column est une propriété pour définir les colonnes qu’un élément de grille chevauche. C’est une abréviation de grid-column-start et grid-column-end. Avec grid-column, vous pouvez définir plus facilement la position et le nombre de colonnes qu’un élément de grille chevauche dans la direction horizontale.
  • grid-row est une propriété pour définir les lignes qu’un élément de grille chevauche. C’est une abréviation de grid-row-start et grid-row-end. Avec grid-row, vous pouvez définir plus facilement la position et le nombre de lignes qu’un élément de grille chevauche dans la direction verticale.
  • La propriété grid-area est une propriété abrégée pour définir simultanément les propriétés grid-row-start, grid-column-start, grid-row-end et grid-column-end. Avec grid-area, vous pouvez définir de manière plus intuitive la position et la taille d’un élément de grille dans la mise en page de grille.

Exemple :

.example {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* Définit 3 colonnes, chaque colonne occupe 1 part d'espace */
grid-template-rows: repeat(2, 150px);
/* Définit 2 lignes, chaque ligne a une hauteur de 150px */
gap: 10px;
padding: 20px;
}
.item {
background-color: #f2f2f2;
padding: 20px;
border: 1px solid #ddd;
text-align: center;
}
/* Positionnement avec grid-column et grid-row */
.item1 {
grid-column: 1 / 3; /* De la colonne 1 à la colonne 3 (1+2 colonnes) */
grid-row: 1 / 2; /* De la ligne 1 à la ligne 2 (1 ligne) */
}
/* Positionnement avec grid-area */
.item2 {
grid-area: 2 / 2 / 3 / 4; /* De la ligne 2, colonne 2 à la ligne 3, colonne 4 (2 lignes) (2+3 colonnes) */
}
<div class="example">
<div class="item item1">Item 1</div>
<div class="item item2">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
</div>

Effet :

Effet de l'exemple

Exemple :

body {
margin: 0;
padding: 0;
}
.container {
display: grid;
grid-template-columns: 1fr 2fr;
/* Définit deux colonnes, première colonne occupe une part, deuxième colonne occupe deux parts */
grid-template-rows: auto;
/* Définit hauteur de ligne, première et troisième ligne hauteur déterminée par contenu, deuxième ligne occupe espace restant */
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
/* Définit mise en page des zones, chaque zone représentée par une chaîne, espaces séparent cellules, saut de ligne représente nouvelle ligne */
min-height: 100vh;
/* Définit hauteur minimale, garantit que le footer reste visible même lorsque la hauteur du contenu est inférieure au viewport */
}
.header {
grid-area: header;
/* Place .header dans la zone nommée "header" */
background-color: #333;
color: #fff;
padding: 10px;
}
.sidebar {
grid-area: sidebar;
/* Place .sidebar dans la zone nommée "sidebar" */
background-color: #f2f2f2;
padding: 10px;
}
.main {
grid-area: main;
/* Place .main dans la zone nommée "main" */
padding: 10px;
}
.footer {
grid-area: footer;
/* Place .footer dans la zone nommée "footer" */
background-color: #333;
color: #fff;
padding: 10px;
}
<div class="container">
<div class="header">Header</div>
<div class="sidebar">Sidebar</div>
<div class="main">
<h1>Main Content</h1>
<p>This is the main content area.</p>
</div>
<div class="footer">Footer</div>
</div>

Effet :

Effet de l'exemple

Partager :

Commentaires