Il s’avère que CSS Grid est très doué pour la mise en page de bandes dessinées en ligne, surtout si vous voulez que vos bandes dessinées soient flexibles. Dans ce tutoriel, nous utiliserons Barry le chat pour montrer comment créer une bande dessinée réactive..
Pour ce tutoriel, j'ai emprunté des illustrations de GraphicRiver; Sleepy Fat Cat est en fait une police d'affichage, mais contient de jolis vecteurs de chat, parfaits pour cette démo BD!
Sleepy Fat Cat Typeface sur GraphicRiverN'oubliez pas que vous aurez besoin de fonctionnalités de navigateur de pointe pour voir la grille CSS en action. Lisez donc CSS Grid Layout: Un guide de démarrage rapide si vous utilisez un navigateur non compatible. Voici ce à quoi nous travaillons:
Découvrez la démo complète sur CodePen pour voir comment il réagit à différentes tailles d'écran..
Commençons par présenter du code HTML:
Barry's Cushion
Une histoire de léthargie et d'ameublement doux
"Je devrais probablement me lever-choses à faire."
"Naaah."
Sleepy Fat Cat par messenj4h
© Copyright heureux pour toujours après Envato Tuts+
Ici nous avons un Un texte sur deux panneaux contient du texte, mais le reste concerne nos images de bandes dessinées. Nous avons deux options ici: nous pouvons soit placer nos images en ligne dans les panneaux, soit ajouter des images via CSS. Je fais ce dernier parce que cela permet de contrôler plus facilement le placement et le dimensionnement des graphiques, mais vous pouvez prétendre que les images en ligne seraient plus accessibles. Votre choix. Pour lancer la balle (de la fourrure), ajoutons quelques styles pour recouvrir notre typographie et nos couleurs: J'ai choisi Kalam comme police Web Google pour notre texte. Son style manuscrit convient parfaitement aux bandes dessinées que je considère. Vous aurez besoin de le brancher dans votre CSS ou via un lien dans la tête de votre document: En commençant par mobile, nous allons disposer les éléments dans une colonne avec un seul panneau sur chaque ligne: En vous reportant à nos précédents tutoriels sur la grille, vous vous souviendrez que Ajoutons maintenant quelques styles généraux à nos panneaux: le Voyons ce que nous avons jusqu'à présent! A quoi sert Internet, n'est-ce pas? J'ai préparé quelques images SVG à ajouter aux panneaux, que je réalise une à une: Avoir l'air bien! Mais je ne veux pas de frontières tout les panneaux. Je vais les enlever (en utilisant Ces images ne fonctionnent pas encore parfaitement. Le pauvre vieux Barry commence à avoir des problèmes sérieux. Il est temps de regarder au-delà de la téléphonie mobile et de modifier notre grille pour des fenêtres plus larges. Ajoutons des requêtes aux médias. un à 400px et un à 600px (chiffres arbitraires, utilisez ce que vous voulez): Nous les utiliserons pour modifier la disposition de la grille dans chaque cas. Nous allons pour deux colonnes et huit lignes pour les écrans légèrement plus grands, puis trois colonnes et cinq lignes pour encore plus grand. Maintenant que nous sommes sortis de nos contraintes de colonne unique, nous pouvons être un peu plus créatifs. Nous avons besoin, par exemple, que notre titre soit sur toute la largeur de la bande dessinée. Il en va de même pour les panneaux contenant du texte et la déclaration de copyright. Même certaines images seraient mieux servies dans des panneaux pleine largeur. Nous allons donc ajouter ces détails à la première de nos requêtes multimédia: J'ai aussi changé la typographie dans quelques cas, pour nous donner à la fin: Notre mise en page à deux colonnes est superbe! Cependant, notre bande dessinée à trois colonnes doit être corrigée. Alors que nous travaillons d'abord sur le mobile, les règles que nous avons appliquées à notre première requête multimédia continuent de s'appliquer sur le plus grand des écrans. Nous devons parcourir les panneaux et réinitialiser certains styles.. Commencez par faire le de même pour J'aimerais que le premier morceau de dialogue soit centré verticalement, utilisons donc flexbox pour le faire. Ajoutez les éléments suivants à la deuxième requête multimédia: La grille ne nous limite pas à des blocs équidistants le long d'une page, nous pouvons également superposer nos panneaux. Nous allons rendre notre dernière partie du texte un peu plus intéressante en l'attribuant au même emplacement de la grille que le panneau suivant: Ici, nous avons positionné les deux Nous pouvons utiliser z-index pour modifier l'ordre d'empilement, donnant ainsi Remarque: maintenant que nous avons effectivement supprimé une ligne, vous devez vérifier votre Ajoutons un peu plus de style à notre "Naaah". Encore une fois, les éléments de la grille ne sont pas aussi limités que vous ne le pensez - nous pouvons les déplacer avec des marges négatives et même les transformer sans aucun problème. J'ai ajouté quelques styles au panneau et au paragraphe qu'il contient pour donner ceci: Bien fait-voici ce que nous avons construit! Il s’agissait d’un exercice amusant d’utilisation de CSS Grid, tout en vous présentant quelques nouveaux concepts de grille. J'espère que ça vous a plu. Maintenant, si ça ne vous dérange pas, je pars pour la sieste. d'agir comme notre grille, avec une charge de
2. Styles de base
/ * bases * / body background: # f8f7f2; rembourrage: 0 10%; police: 100% / 1,5 'Kalam', cursive; h1 margin: 0; hauteur de ligne: 1; rembourrage: 10px; couleur: # 251b19; p margin: 0; rembourrage: 10px; couleur: # 251b19; taille de police: 1.2em; a color: # e56633; a: hover text-decoration: none;
3. Notre grille
.grid-1 display: grid; largeur: 100%; largeur maximale: 770px; marge: 10% auto; grid-template-columns: 1fr; grid-template-rows: auto 200px 200px auto 200px 200px 200px auto 200px 200px auto; intervalle de grille: 25 px;
Grille-modèle-colonnes
attribue le nombre de colonnes que nous aurons et leur largeur. grid-template-rows
fait de même pour les lignes; nous en définissons ici onze. Ceux contenant des images auront une hauteur de 200px, ceux avec du texte seront automatiquement redimensionnés en fonction du contenu. finalement, fossé
définit la taille de nos gouttières..panneau couleur: blanc; répétition de fond: non répétée; position de fond: centre centre; taille du fond: couverture; box-shadow: 0px 0px 0px 5px # 251b19;
Contexte
Les propriétés n'ont pas encore d'impact visuel, mais elles le seront dès que nous ajouterons des images d'arrière-plan. Et le boîte ombre
agit comme une frontière. Vous pouvez également utiliser traditionnel frontière
propriétés ici si vous préférez, mais box-shadow donne parfois plus de flexibilité. 4. Photos de chat
.panel-1 background-image: url (cat-1.svg);
boîte-ombre: aucune;
) parmi ceux contenant du texte, avec la première image et l'image finale. 5. Requêtes de médias
/ * Interrogation multimédia 1 * / Écran uniquement multimédia et (min-largeur: 400px) / * Interrogation multimédia 2 * / @ Écran uniquement multimédia et (min-largeur: 600px)
/ * média interrogé 1 * / @média uniquement écran et (largeur minimale: 400 pixels) .grid-1 grid-template-columns: repeat (2, 1fr); grid-template-rows: auto 200px auto 200px 200px auto 200px auto; / * média interrogation 2 * / @média uniquement écran et (largeur minimale: 600 pixels) .grid-1 grid-template-columns: repeat (3, 1fr); grid-template-rows: auto 200px 200px 200px auto;
Couvrant
.panneau-titre, .panel-3, .panel-6, .panel-7, .panel-copyright grid-column: span 2;
6. Fixer notre disposition en trois colonnes
.titre du panneau
couvrez trois colonnes, au lieu de deux. ensuite .panneau 3
(avec le texte) peut être remis à grille-colonne: envergure 1;
ou grille-colonne: auto;
.panneau-6
. Avec quelques modifications supplémentaires, vous devriez obtenir quelque chose comme ceci:Un petit peu de Flexbox
.panel-3 display: flex; align-items: centre;
Avant flexbox, après flexbox 7. Panneaux superposés
.panel-7 grille-colonne: 1; rangée de grille: 4; z-index: 1; .panel-8 grille-colonne: 1 / span 2; rangée de grille: 4;
.panneau 7
et .panneau 8
à grille-colonne: 1;
et rangée de grille: 4;
. Cela signifie qu'ils sont tous deux exactement au même endroit, celui qui apparaît en deuxième position dans le DOM étant superposé au premier...panneau 7
une z-index: 1;
l'amène au sommet:grid-template-rows
vont bien. Conclusion
Lectures complémentaires