Apprendre CSS Grid avec un jeu de jardin virtuel
(cssgridgarden.com)- Grid Garden est un outil d’apprentissage ludique dans lequel on écrit du code CSS pour arroser un jardin de carottes, afin de s’exercer pas à pas à la mise en page avec CSS Grid
- La première étape consiste à définir la colonne de départ avec la propriété grid-column-start afin que l’eau n’atteigne que la zone où se trouvent les carottes
grid-column-start: 3;fait démarrer la zone d’arrosage à partir de la troisième ligne de grille verticale en partant de la gauche- Le jardin d’exemple est une grille 5x5 construite avec
display: grid,grid-template-columnsetgrid-template-rows, où chaque ligne et chaque colonne occupe 20 % - L’ensemble comprend 28 niveaux et, pour aller plus loin en CSS, on peut enchaîner avec Flexbox Froggy et Anchoreum
Une manière d’apprendre CSS Grid à travers les règles d’un jeu
- Grid Garden est un jeu dans lequel on fait pousser un jardin de carottes en saisissant du code CSS
- Le joueur ajuste les propriétés de CSS Grid pour n’arroser que les zones où se trouvent les carottes
- Dans le premier niveau, on utilise
grid-column-startpour définir la position de la colonne où l’arrosage commence
Premier niveau : grid-column-start et un jardin 5x5
grid-column-start: 3;fait commencer la zone d’arrosage à partir de la troisième ligne de séparation verticale de la grille en partant de la gauche- Le
#gardendu code d’exemple est défini comme conteneur CSS Griddisplay: grid;grid-template-columns: 20% 20% 20% 20% 20%;grid-template-rows: 20% 20% 20% 20% 20%;
- Cette configuration crée une grille 5x5 dont les colonnes et les lignes sont chacune divisées en parts de 20 %
Structure des niveaux et autres jeux à essayer ensuite
- L’écran affiche le niveau 1 sur un total de 28 niveaux
- D’autres jeux pour approfondir le CSS sont également proposés : Flexbox Froggy et Anchoreum
1 commentaires
Avis sur Hacker News
J’ai toujours trouvé que cette série de Rachel Andrews était une excellente ressource d’apprentissage : https://www.smashingmagazine.com/2020/01/understanding-css-g...
Même en venant du backend, elle m’a donné des bases solides pour créer des applis UI modernes légères et simples
Je n’avais besoin ni de Bootstrap ni de Tailwind
On ne peut pas utiliser Tailwind sans connaître CSS, et on apprend CSS en l’utilisant
Du coup, je le trouve au contraire assez léger et simple
Tailwind, en revanche, ne fait pas ça à votre place
Si on ne connaît pas Grid ou Flexbox, Tailwind peut être aussi pénible que du CSS pur
Ce jeu est plutôt bon et amusant, mais il est très tentant d’expérimenter avec les valeurs dans tous les sens pour résoudre seulement le problème du moment, plutôt que de se concentrer sur « comment ça fonctionne réellement »
Pour encourager une compréhension plus profonde, on pourrait laisser davantage de liberté pour résoudre les problèmes, mais appliquer une petite pénalité après 2 ou 3 tentatives
Il y a des moments où il faut réutiliser ce qu’on a appris en tâtonnant sur des problèmes similaires, et ajuster jusqu’à ce que ça marche
Quelques notes en vrac :
Donc si la réponse est valide, on peut passer le niveau même avec une méthode qui n’utilise pas la grille
position: relative; left: 31.4em;Dans une ancienne boîte, on faisait chaque semaine environ 30 minutes de show and tell avec l’équipe, et une semaine j’ai apporté ça pour laisser les personnes qui ne codaient pas proposer des réponses
C’était intéressant de voir jusqu’où elles pouvaient aller : certaines comprenaient immédiatement, d’autres avaient beaucoup plus de mal
Globalement, tout le monde a apprécié, et je pense que c’était une bonne façon de donner des notions de base en programmation à des gens qui ne coderont jamais de leur vie
Des années plus tard, des collègues me ressortaient encore des phrases du genre « c’est ça que tu fais toute la journée ? », ce qui me faisait rire parce qu’ils voyaient ça comme de la magie alors que c’est la partie la plus facile de mon travail
Mais j’ai apprécié que le fait d’avoir essayé un peu leur ait donné plus de respect pour ce travail
Je pensais que Flexbox avait changé la donne pour CSS, puis Grid est arrivé, et c’était vraiment impressionnant et prévisible
Désormais, la douleur restante en CSS, ce sont les cas bizarres du genre : « un composant doit occuper l’espace restant que ses éléments frères n’utilisent pas, et l’un de ses enfants doit lui aussi occuper tout ce que ses propres frères n’utilisent pas, puis devenir un overflow scrollable s’il n’y a plus assez d’espace »
Il y a plusieurs cas où les interactions étranges entre Flexbox et Grid, ainsi que les priorités du calcul des tailles dans la mise en page, s’entremêlent, et je ne les comprends pas encore complètement
C’est peut-être surtout mon problème, mais contrairement à Flexbox ou Grid eux-mêmes, cela me semble toujours peu intuitif
J’ai cru un instant qu’il s’agissait de https://csszengarden.com/pages/about/
À l’époque, c’était une ressource incroyable pour apprendre CSS et trouver de l’inspiration design
C’était le moment où les fruits du mouvement pour les standards du web commençaient à apparaître
Malheureusement, React est arrivé ensuite, et les bonnes choses ont été jetées par la fenêtre
Apparemment, même la soupe de balises devient mangeable quand elle est enterrée profondément dans
node_modulesQuelques grandes discussions anciennes :
2019 : https://news.ycombinator.com/item?id=21050501
2018 : https://news.ycombinator.com/item?id=18753358
2017 : https://news.ycombinator.com/item?id=14041367
Ce jeu et Flexbox Froggy sont de bonnes portes d’entrée amusantes vers la mise en page CSS
Pour y accéder directement, allez sur https://flexboxfroggy.com/
J’espérais que cela m’aiderait à trouver une bonne solution pour un petit problème simple de frontend web sur lequel je travaillais
Mais après les 10 premiers niveaux, je déteste encore plus CSS
Ce que je n’aime pas avec CSS Grid, c’est qu’il retire presque toute la structure sémantique du HTML
Avec Flexbox, au moins, l’arbre HTML correspond à une certaine structure de la page, mais avec CSS Grid, on finit par voir des choses comme ça
<-! quantité aléatoire de div sans noms de classe -->Du coup, pour comprendre ce qui se passe sur la page, il faut soudain comparer avec le CSS
C’est très efficace, mais c’est laid