Je crée un tableau en utilisant une grille css. Je ne peux pas ajouter de ligne de bordure aux lignes. Il y a un espace entre les colonnes. Cela devrait ressembler à l'image
Voici ce que j'ai obtenu lorsque j'ajoute une bordure en bas aux cellules:
const TableWrapperUI = styled.div` display: grid; box-sizing: border-box; width: 100%; border: 1px solid #dbeaf4; grid-template-columns: repeat( ${props => props.columns && props.columns}, fit-content(400px) ); justify-items: center; padding: 5px; justify-content: space-between; > span { justify-self: left; border-bottom: 1px solid red; } `;
Vous pouvez vérifier ici: https://codesandbox.io/s/goofy-easley-w5rrg
3 Réponses :
Ok, voici une petite astuce. Ça a l'air un peu loufoque, mais ça marche.
const TableWrapperUI = styled.div display: grid; box-sizing: border-box; width: 100%; border: 1px solid #ff0000; grid-template-columns: repeat( ${props => props.columns && props.columns}, fit-content(400px) ); justify-items: center; padding: 5px 5px 5px 0; overflow: hidden; justify-content: space-between; > span { justify-self: left; border-bottom: 1px solid #d1d1d1; width:150%; text-align: left; padding: 10px; box-sizing: border-box; } ;
Si vous utilisez la disposition des écrans larges, augmentez simplement de 150% à 300% ou quelque chose comme ça.
Cela aide à combler les lacunes entre les colonnes. Ça a l'air étrange, mais ça marche. De plus, le div parent doit être overflow: hidden;
Si vous souhaitez avoir des lignes de séparation entre les lignes, essayez l'approche suivante.
grid-row-gap: 1px
(dépend de l'épaisseur requise) const TableWrapperUI = styled.div` display: grid; box-sizing: border-box; width: 100%; border: 1px solid #dbeaf4; grid-template-columns: repeat( ${props => props.columns && props.columns}, fit-content(400px) ); padding: 5px; background-color: #eaeaea; // step 1 grid-row-gap: 1px; // step 2 > span { display: block; background-color: #ffffff; // step 3 } `;
Si vous souhaitez conserver l'espace entre les éléments, vous pouvez ajouter un élément vide entre chaque ligne et l'étirer sur toute la largeur du conteneur (en utilisant la propriété grid-column
) puis ajouter une bordure
Vous pouvez voir l'exemple ici:
<div class="container"> <div>col 1 of row 1</div> <div>col 2 of row 1</div> <div>col 3 of row 1</div> <div>col 4 of row 1</div> <div class="row-border"></div> <div>col 1 of row 2</div> <div>col 2 of row 2</div> <div>col 3 of row 2</div> <div>col 4 of row 2</div> <div class="row-border"></div> <div>col 1 of row 3</div> <div>col 2 of row 3</div> <div>col 3 of row 3</div> <div>col 4 of row 3</div> <div class="row-border"></div> <div>col 1 of row 4</div> <div>col 2 of row 4</div> <div>col 3 of row 4</div> <div>col 4 of row 4</div> </div>
.container{ display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; grid-gap: 10px; } .row-border{ border-top: 2px solid gray; grid-column: 1 / 5; /* this code makes the row stretch to entire width of the container */ }
Je suppose qu'il n'est pas possible de styliser la ligne / colonne de la grille, bien que vous puissiez envelopper vos étendues dans, disons, divs et les étirer pour occuper toute la largeur de la cellule:
> div {width: 100%; affichage: flex; &> span {justify-content: left; }}
voici également un tas d'idées stackoverflow.com/questions/46308048/...
@EvgenyTimoshenko encore un écart entre les colonnes