Je joue avec les grilles CSS.
Lorsque je le visualise sur une taille de bureau (min-width: 769px)
J'ai une seule ligne avec 3 colonnes - quelque chose comme ceci:
---------------------------------------------
| col 1 | col 2 | col 3 |
| | | |
---------------------------------------------
Puis-je avec css-grid déplacer les colonnes pour pouvoir faire quelque chose comme ça sur une mise en page mobile:
---------------------------------------------
| col 1 | col 3 |
| | |
---------------------------------------------
| col 2 |
---------------------------------------------
Je sais que je couvre des cellules avec quelque chose comme ceci:
.content{
grid-column: 1 / span2;
}
Mais je veux changer l'ordre des colonnes. Puis-je le faire sans pré-processeur?
Voici ma classe de grille actuelle:
.my-grid {
display:grid;
grid-template-columns: 15% 1fr 25% ;
grid-template-rows: 1fr; /* for as many rows as you need */
grid-gap: 10px;
border: 2px solid #222;
box-sizing: border-box;
}
La disposition de la grille propose plusieurs méthodes pour réorganiser les éléments de la grille. J'en ai énuméré trois ci-dessous.
Voici la disposition originale:
grid-container {
display: grid;
grid-template-columns: 15% 1fr 25%;
grid-auto-rows: 50px; /* for demo */
grid-gap: 10px;
}
/* non-essential decorative styles */
grid-item {
border: 1px solid gray;
background-color: lightgreen;
display: flex;
align-items: center;
justify-content: center;
}
grid-item:nth-child(2) {
background-color: orange;
}
<grid-container>
<grid-item>1</grid-item>
<grid-item>2</grid-item>
<grid-item>3</grid-item>
</grid-container>
grid-template-areas
La propriété grid-template-areas
Vous permet d'organiser votre mise en page en utilisant ASCII art visuel.
Placez les noms de zone de grille (définis pour chaque élément) à l'endroit où vous souhaitez qu'ils apparaissent.
grid-container {
display: grid;
grid-template-columns: 15% 1fr 25%;
grid-auto-rows: 50px; /* for demo */
grid-gap: 10px;
grid-template-areas: "column-1 column-2 column-3";
}
grid-item:nth-child(1) { grid-area: column-1; }
grid-item:nth-child(2) { grid-area: column-2; }
grid-item:nth-child(3) { grid-area: column-3; }
@media ( max-width: 500px ) {
grid-container {
grid-template-columns: 1fr 1fr;
grid-template-areas: " column-1 column-3 "
" column-2 column-2 ";
}
}
/* non-essential decorative styles */
grid-item {
border: 1px solid gray;
background-color: lightgreen;
display: flex;
align-items: center;
justify-content: center;
}
grid-item:nth-child(2) {
background-color: orange;
}
<grid-container>
<grid-item>1</grid-item>
<grid-item>2</grid-item>
<grid-item>3</grid-item>
</grid-container>
référence spec:
7.3. Zones nommées: la propriété
grid-template-areas
Cette propriété spécifie zones de grille nommées, qui ne sont associées à aucun élément de grille particulier, mais peuvent être référencées à partir du propriétés de placement de la grille.
La syntaxe de la propriété
grid-template-areas
Fournit également une visualisation de la structure de la grille, facilitant la compréhension de la disposition générale du conteneur de grille.Toutes les chaînes doivent avoir le même nombre de colonnes, sinon la déclaration n'est pas valide.
Si une zone de grille nommée s'étend sur plusieurs cellules de grille, mais que ces cellules ne forment pas un seul rectangle rempli, la déclaration n'est pas valide.
Remarque: les régions non rectangulaires ou déconnectées peuvent être autorisées dans une future version de ce module.
Utilisez grid-row-start
, grid-row-end
, grid-column-start
, grid-column-end
Ou leurs raccourcis, grid-row
Et grid-column
, Pour définir un taille et emplacement de l'élément de grille dans la grille.
grid-container {
display: grid;
grid-template-columns: 15% 1fr 25%;
grid-auto-rows: 50px; /* for demo */
grid-gap: 10px;
}
@media ( max-width: 500px ) {
grid-container { grid-template-columns: 1fr 1fr; }
grid-item:nth-child(1) { grid-row: 1 / 2; grid-column: 1 / 2; }
grid-item:nth-child(2) { grid-row: 2 / 3; grid-column: 1 / 3; }
grid-item:nth-child(3) { grid-row: 1 / 2; grid-column: 2 / 3; }
}
/* non-essential decorative styles */
grid-item {
border: 1px solid gray;
background-color: lightgreen;
display: flex;
align-items: center;
justify-content: center;
}
grid-item:nth-child(2) {
background-color: orange;
}
<grid-container>
<grid-item>1</grid-item>
<grid-item>2</grid-item>
<grid-item>3</grid-item>
</grid-container>
référence spec:
order
La propriété order
dans Grid Layout fait la même chose que dans Flex Layout.
grid-container {
display: grid;
grid-template-columns: 15% 1fr 25%;
grid-auto-rows: 50px; /* for demo */
grid-gap: 10px;
}
@media ( max-width: 500px ) {
grid-container { grid-template-columns: 1fr 1fr; }
grid-item:nth-child(1) { order: 1; }
grid-item:nth-child(2) { order: 3; grid-column: 1 / 3; }
grid-item:nth-child(3) { order: 2; }
}
/* non-essential decorative styles */
grid-item {
border: 1px solid gray;
background-color: lightgreen;
display: flex;
align-items: center;
justify-content: center;
}
grid-item:nth-child(2) {
background-color: orange;
}
<grid-container>
<grid-item>1</grid-item>
<grid-item>2</grid-item>
<grid-item>3</grid-item>
</grid-container>
référence spec: