Nous allons d’abord présenter quelques bases de CSS Grid. Nous les utiliserons ensuite pour construire la mise en page de notre tableau de bord de base. Après cela, nous explorerons la configuration et la structure de nos blocs de contenu internes, y compris un peu de flexbox. Enfin, nous parlerons brièvement de la réactivité aux mobiles, tout en intégrant une fonctionnalité de glissement adaptée aux mobiles dans notre nav latéral. Qu’allez-vous en retirer ? Un tableau de bord « boom-goes-the-dynamite » qui fera que les gens vous aimeront beaucoup.
Note : Nous allons construire une version simplifiée du tableau de bord ci-dessus, qui utilise les mêmes concepts que la version complète. La version complète rendrait cette pièce bêtement longue…
- Premières choses d’abord : notre disposition de grille de base
- Puis, établissons la loi… je veux dire CSS
- Grid-template-areas explained
- Ajout de l’en-tête et du pied de page
- Ajout de l’élément side nav
- Ajouter le premier élément de section <main>
- Maintenant les choses deviennent intéressantes…. les cartes d’introduction de la grille responsive
- Ajouter les conteneurs de contenu principal
- Une brève note sur la réactivité mobile responsable
- Making our side nav slidable on mobile devices
Premières choses d’abord : notre disposition de grille de base
Je vais décomposer CSS Grid pour vous, court et doux. Nous avons besoin d’un conteneur de grille principal, puis d’un div
(ou élément sémantique) pour chaque élément dans le conteneur de grille :
Structure plutôt simple, non ? Notre mise en page aidera à produire cette toile immédiatement magnifique ci-dessous. Ne vous inquiétez pas, nous allons ajouter plus de contenu.
Puis, établissons la loi… je veux dire CSS
Votre conteneur principal doit être défini comme display: grid;
pour que toute fonctionnalité de grille fonctionne réellement. Nous lui donnons également une hauteur de 100% pour lui dire que nous voulons que notre tableau de bord remplisse toute la page. Et, pour chaque conteneur enfant, nous allons attribuer un nom afin de pouvoir indiquer à la grille ce qu’elle doit faire avec lui. Ensuite, nous utiliserons les noms pour créer la structure de la page dans une déclaration de type feuille de calcul en utilisant grid-template-areas
:
Notre tableau de bord final et réactif ressemblera à ceci :
Grid-template-areas explained
Nous avons essentiellement attribué un nom à chacun de nos conteneurs enfants, puis nous les avons jetés dans un format de type feuille de calcul via grid-template-areas
. Très simple.
Nous avons deux colonnes au total de gauche à droite. La première colonne fait 250px de large (la nav latérale), et la seconde fait 1fr, ou fraction. Cela signifie qu’elle occupera l’espace restant du conteneur après que la première colonne ait été dessinée.
Puis, nous déclarons trois rangées totales. Les rangées s’écoulent de haut en bas. Ainsi, en commençant par le haut, nous avons un élément <header>
qui a une hauteur de 50px. Ensuite, nous déclarons la zone de contenu <main>
, qui a une hauteur de 1fr. Cela signifie qu’elle va s’étirer verticalement pour remplir l’espace restant de la fenêtre après que les hauteurs explicitement déclarées aient été dessinées. Enfin, nous déclarons notre <footer>
, également à une hauteur de 50px.
Ajout de l’en-tête et du pied de page
La <header>
et la<footer>
seront toutes deux des conteneurs flexibles, avec un espacement et un alignement flexibles :
Nous utilisons justify-content: space-between;
pour étaler le premier et le dernier élément de sorte qu’ils s’étirent aux deux extrémités de leur conteneur. C’est tellement facile par rapport aux instructions float
de la vieille école. Et, grâce à align-items: center;
, nous avons nos éléments parfaitement alignés sans avoir à compter sur le padding, etc. pour le centrage.
Une brève note sur notre syntaxe de classe CSS d’apparence bizarre : nous utilisons le style BEM (block-element-modifier) CSS, que je recommande pour l’évolutivité et la lisibilité. Il est recommandé d’éviter les sélecteurs de balises html bruts.
Pour le contenu du side nav, nous utilisons les éléments traditionnels <ul>
et <li>
. Je recommande ceci plutôt que <div>
ou tout autre élément pour une bonne sémantique html et une lisibilité humaine. Nous ajouterons une fonctionnalité de glissement adaptée aux mobiles dans notre side nav un peu plus bas :
Ajouter le premier élément de section <main>
Celui-ci est direct et simple. Un autre conteneur flex :