Je crée une page contenant les détails des employés de l'entreprise. mon problème est que j'ai essayé de donner à mes éléments de grille un attribut de style "zone de grille" afin que je puisse utiliser le "nom de grille" lors de la définition de mes zones de modèle de grille pour mon conteneur. mais soudain mes objets disparaissent. Que dois-je faire pour résoudre le problème?
.container{ border-right: 2px solid grey; border-left: 2px solid grey; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-gap: 10px; justify-items: center; margin-top: 100px; grid-template-areas { "head head head" " . side ." "foot foot foot"; } } .grid-1{ display: grid; grid-area: head; } .grid-2{ display: grid; grid-area: side; } .grid-3{ display: grid; grid-area: foot; }
Je m'attends à ce que la sortie de ma grille continue de s'afficher quel que soit l'attribut de style "grid-area" utilisé mais il disparaît. p>
3 Réponses :
En regardant cette documentation, je vois un segment qui dit:
Pour commencer, vous devez définir un élément de conteneur comme une grille avec
display: grid
, définir la taille des colonnes et des lignes avecgrid-template-columns
etgrid-template-rows
, puis placez ses éléments enfants dans la grille avecgrid-column
etgrid-row
.
Je vois votre utilisation de grid-template-columns
mais aucune des grid-template-rows
. Changer .container
pour inclure grid-template-rows
peut aider, quelque chose comme ceci (pour trois lignes):
.container{ border-right: 2px solid grey; border-left: 2px solid grey; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; justify-items: center; margin-top: 100px; grid-template-areas: "head head head" " . side ." "foot foot foot"; }
p>
J'ai essayé de le faire mais les éléments continuent de disparaître.
Je vais voir si je peux reproduire le problème.
Votre syntaxe pour grid-template-area
est incorrecte. La valeur ne doit pas être entourée d'accolades, mais doit ressembler à ceci:
<div class="container"> <div class="grid-1">Header</div> <div class="grid-2">Side</div> <div class="grid-3">Footer</div> </div>
.container{ height: 400px; width: 400px; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-gap: 10px; grid-template-areas: "head head head" " . side ." "foot foot foot"; } .grid-1{ display: grid; grid-area: head; background-color: pink; } .grid-2{ display: grid; grid-area: side; background-color: blue; } .grid-3{ display: grid; grid-area: foot; background-color: green; }
@Japhheth Les éléments de l'extrait de code que j'ai partagé ne disparaissent pas. Si vous rencontrez toujours un problème, vous devrez peut-être partager davantage de votre code
Semble fonctionner en corrigeant la faute de frappe dans grid-template-areas
et en définissant grid-auto-rows
. Je suggérerais d'examiner une autre propriété CSS qui pourrait être à l'origine du problème car ce que vous avez fourni fonctionne assez bien avec des correctifs mineurs.
<div class="container"> <div class="grid-item grid-1">Head</div> <div class="grid-item grid-2">Side</div> <div class="grid-item grid-3">Foot</div> </div>
.container { border-right: 2px solid grey; border-left: 2px solid grey; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-auto-rows: minmax(150px, auto); grid-gap: 10px; justify-content: center; grid-template-areas: "head head head" ". side ." "foot foot foot"; } .grid-item { border: 1px solid black; } .grid-1 { grid-area: head; display: grid; } .grid-2 { grid-area: side; display: grid; } .grid-3 { grid-area: foot; display: grid; }
Heureux de vous aider :)
Sauf si vous utilisez un type de préprocesseur CSS, vous ne pouvez pas imbriquer des sélecteurs CSS comme ça.