CSS & Grid | Code + HTML + CSS, La Mise En Page Simplifié
Maybe your like
Historique
Après les tableaux, les flottants, les inline-block et Flexbox…
Depuis 2017, il est possible d’utiliser un nouveau modèle de positionnement conçu pour la mise en page, Grid ou « CSS Grid Layout » (pour vos recherches sur le web). Ce modèle étant jeune, certains navigateurs ne peuvent pas l’utiliser.
Certains Mac sont « bloqués » sur Mac OS 10.6.8, ce qui implique l’installation d’un Google Chrome version 49 (v69 en octobre 2018) sans support de Grid par défaut.Flexbox ou Grid
Actuellement, Flexbox ayant un meilleur support avec 96% des utilisateurs (en France) contre 93% pour Grid, il semble plus judicieux d’utiliser Flexbox. Néanmoins, dans un futur proche le support sera identique et le choix moins lié aux utilisateurs. Pour faire simple, flexbox marche bien sur les éléments dans les blocs d’une page (logo et menu dans header, navigation dans footer…) et Grid pour placer tous les blocs.
Sauf projet particulier, vous pouvez faire votre site en utilisant le display grid puis vérifier que sans grid l’information reste accessible et lisible.Première grille
En appliquant le display:grid sur un élément, on peut contrôler ses enfants directs. Cette propriété seule ne suffit pas, contrairement à Flexbox. Ensuite, il faut définir un gabarit pour les colonnes (et/ou les rangs) et enfin les gouttières, si besoin.
.grid{ padding:0; margin:12px; display:grid; /* le fameux */ grid-template-columns:80px 100px 150px; /* 3 colonnes de largeur différente */ grid-template-rows:100px 200px; /* 2 rangées */ grid-gap: 12px 16px; /* ou une seule valeur si la gouttière est identique en x et y */ gap:12px 16px; /* - écriture moderne */ }See the Pen grid 01 by Benoît Wimart (@benoitwimart) on CodePen.
Placement dans la grille
Chaque enfant de la grille peut être placé sur une cellule précise avec un point de départ et un point d’arrivée (ou un nombre de cellules à étirer). Pour cela, on compte les lignes de la grille de 1 à N (2 colonnes = 3 lignes |…|…| ) et on utilise grid-column et/ou grid-row.
Il n’est absolument pas nécessaire de mettre des coordonnées sur tous les éléments. h1{ /* typographie */ grid-column:1 / 4; /* de 1 à 4 */ grid-column:1 / span 3; /* idem de 1 à 4 */ background:#f60; } p:nth-of-type(1){ /* astuce pour le p n°1 */ background:#f60; grid-row:1 / 4; grid-column:4 / 5; }See the Pen grid 02 by Benoît Wimart (@benoitwimart) on CodePen.
Sans mettre toutes les coordonnées
See the Pen grid 02.bis by Benoît Wimart (@benoitwimart) on CodePen.
GTC
En tapant gtc+tab, emmet va écrire grid-template-columns. Cette propriété permet de définir la grille des colonnes. Une unité spéciale permet d’écrire des grilles facilement, le « fr » (fraction). On peut voir celle-ci comme des pourcentages avec une amélioration/simplification des calculs quand on a des gouttières (gap). Sans les fr, 50% + 50% + 24px de gouttière = 100% + 24px, ça déborde. Avec les fr, 1fr + 1fr + 24px de gouttières = (50% – 12px) + (50% – 12px) + 24px = 100%.
.grid{ display:grid; /* obligatoire pour définir le gtc */ grid-template-columns: 1fr 1fr; /* 2 colonnes de largeur identique */ } .grid{ display:grid; /* obligatoire pour définir le gtc */ grid-template-columns: repeat(3, 1fr); /* 3 colonnes de largeur identique */ } .grid{ display:grid; /* obligatoire pour définir le gtc */ grid-template-columns: 200px repeat(3, 1fr); /* une colonne de 200px + 3 colonnes de largeur identique */ } .grid{ display:grid; /* obligatoire pour définir le gtc */ grid-template-columns: repeat(3, 320px); /* 3 colonnes de 320px */ }GTR
En tapant gtr+tab, emmet va écrire grid-template-rows. Cette propriété permet de définir la grille des rangées.
Attention, il n’est pas nécessaire/obligatoire de mettre un grid-template-rows, si vos colonnes sont fluides et qu’elles s’ajustent à la largueur, une grille horizontale peut devenir un casse-tête si vous devez maintenir des ratios. .grid{ display:grid; /* obligatoire pour définir le gtc */ grid-template-rows: repeat(3, 1fr); /* 3 rangées de hauteur identique ou pas :( */ }Dans tes rêves
Ceci ne marche pas toujours comme prévu car la hauteur est souvent basée sur le contenu, un body avec une ligne de texte aura la hauteur de celle-ci (et pas la hauteur de la page).
En vrai
.grid{ display:grid; /* obligatoire pour définir le gtc */ min-height:100vh; /* on force la hauteur 100vh = 100% de la hauteur */ /* sans gtr, plusieurs rangées de hauteur identique, grid par défaut */ } .grid{ display:grid; /* obligatoire pour définir le gtc */ min-height:100vh; /* on force la hauteur 100vh = 100% de la hauteur */ grid-template-rows: repeat(3, 1fr); /* 3 rangées de hauteur identique */ /*********** ~33.33vh, sauf si une rangée contient un élément plus grand que ~33.33vh, une image de 2000px de haut forcera à 3 rangées de 2000px ************/ }Auto plus
Deux propriétés peuvent vous dépanner dans les cas complexes : grid-auto-rows: 200px; permet de créer des rangées supplémentaires avec une hauteur définie (à la place d’automatique). grid-auto-flow: row dense; avec cette valeur, permet de remplir « si possible » les row (rangées) en modifiant l’ordre des enfants.
À savoir
Le centrage du bloc
En ajoutant un margin:auto sur l’enfant, si le parent a un display:grid (attention il faut souvent ajouter un height sur le parent), on centre !
See the Pen grid + margin auto by Benoît Wimart (@benoitwimart) on CodePen.
Le centrage du contenu
Ici, on pilote le placement à partir du père (cas fréquent)
See the Pen grid + align-items + justify-items by Benoît Wimart (@benoitwimart) on CodePen.
La superposition
En donnant des grid-column et grid-row identique on superpose les éléments.
See the Pen grid + superposition by Benoît Wimart (@benoitwimart) on CodePen.
Références
https://css-tricks.com/… https://la-cascade.io/… https://labs.jensimmons.com/ https://cssgridgarden.com/#fr
Tag » Apprendre Css Grid
-
Grilles - Apprendre Le Développement Web | MDN
-
Apprendre Le Positionnement En S'amusant – Partie 2 : Grid Layout
-
Introduction Aux Grilles CSS - Pierre Giraud
-
Apprendre Grid CSS Et Le Maîtriser En 6 Minutes ! - YouTube
-
Grille CSS - Guide Des Mises En Page De La Grille CSS - Raidboxes
-
MEILLEURE FORMATION CSS Grid : Maîtriser Le Responsive
-
Apprendre Le CSS Moderne Grid & Flexbox En Ligne | Skilleos
-
Maîtrisez CSS GRID ! | Udemy
-
CSS Grid Layout, Les Ressources Indispensables Pour Apprendre
-
Create Grids With CSS Grid - OpenClassrooms
-
Des Ressources Pour Apprendre CSS Grid - Barbu Du Web
-
Articles à Propos De Cssgrid - La Cascade
-
Comment Devenir Un Expert Des Grilles CSS ? - Korben
-
Le Tutoriel De CSS Grid Layout - Devstory