Existe-t-il un moyen de styler davantage que la largeur des espaces de grille dans le module de disposition de grille CSS? Je ne trouve rien à ce sujet dans la documentation, mais on aurait tendance à penser que ce serait possible, car les espaces de grille ont tendance à être colorés dans de nombreux modèles. Si ce n'est pas possible, existe-t-il une solution de contournement?
Malheureusement, il n'y a actuellement aucun moyen dans la spécification CSS Grid de styler grid-gap
. Je suis venu avec une solution qui fonctionne bien bien que cela implique seulement html et css: affiche les lignes de la grille de frontière uniquement entre les éléments
Par exemple: si l’on a une grille de carrés de 5x5, est-ce le seul moyen d’obtenir des lignes de grille colorées pour remplir la grille de 25 éléments et appliquer des bordures à ces mêmes éléments?
Vous pouvez le faire, mais les bordures de la grille ne se réduisent pas de la même manière que les bordures de tableau avec le border-collapse
_ propriété, et contrairement aux espaces vides, ils seront appliqués au périmètre de votre grille avec les bordures intérieures, ce qui peut ne pas être souhaité. De plus, si vous avez un grid-gap
déclaration, les espaces sépareront vos bordures d’éléments de grille un peu comme border-collapse: separate
fait avec les bordures de la table.
grid-gap
est l'approche idiomatique d'espacement des éléments de la grille, mais ce n'est pas idéal, car les espaces vides ne sont que cela: de l'espace vide, pas des boîtes physiques. À cette fin, le seul moyen de corriger ces espaces est d'appliquer une couleur d'arrière-plan au conteneur de la grille.
Au lieu d'utiliser le solution ci-dessus , je vous recommande d'utiliser border
avec des pseudo-classes, car si vous avez une quantité irrégulière de "cellules de tableau", vous obtiendrez une cellule remplie de couleurs laides à la fin de la "table".
Si vous souhaitez utiliser des bordures entre les "cellules de tableau" et que vous ne disposez pas toujours du même nombre de cellules, vous pouvez faire quelque chose comme ceci (cet exemple fonctionnerait également avec flexbox):
.wrapper {
display: grid;
grid-template-columns: repeat(2, auto);
/* with flexbox:
display: flex;
flex-wrap: wrap;
*/
}
/* Add border bottom to all items */
.item {
padding: 10px;
border-bottom: 1px solid black;
/* with flexbox:
width: calc(50% - 21px);
*/
}
/* Remove border bottom from last item & from second last if its odd */
.item:last-child, .item:nth-last-child(2):nth-child(odd) {
border-bottom: none;
}
/* Add right border to every second item */
.item:nth-child(odd) {
border-right: 1px solid black;
}
<div class="wrapper">
<div class="item">BOX 1</div>
<div class="item">BOX 2</div>
<div class="item">BOX 3</div>
<div class="item">BOX 4</div>
<div class="item">BOX 5</div>
</div>
J'ai ajouté la couleur de bordure comme couleur d'arrière-plan à la grille et une couleur d'arrière-plan à tous les éléments de la grille.
.grid {
width: 1000px;
display: grid;
background: #D7D7D7;
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: 200px;
grid-gap: 1px;
}
.grid-item {
background: white;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div class="grid">
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
</div>
</body>
</html>
Cela fonctionne pour moi.
Vous pouvez utiliser des bordures au lieu de grip ou simplement changer la couleur d'arrière-plan, si cela fonctionne.
.yourDiv {
border-right: 5px solid rgb(110, 0, 210);
border-top: 10px solid rbg(255, 255, 0);
}
J'espère que ça aide!
Définir la couleur de fond sur la grille colorera vos espaces. Par exemple:
section {
display: grid;
grid-gap: 15px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
background-color: red;
}