J'ai eu des problèmes similaires avec l'espace entre les colonnes. Le problème de base est que les colonnes dans bootstrap 3 et 4 utilisent le padding au lieu de la marge. Ainsi, les couleurs d'arrière-plan de deux colonnes adjacentes se touchent.
J'ai trouvé une solution qui correspond à notre problème et qui fonctionnera probablement pour la plupart des gens qui essaient d'espacer les colonnes et de maintenir la même largeur de gouttière que le reste du système de grille.
C'est le résultat final que nous voulions obtenir
Le fait d'avoir un espace avec une ombre portée entre les colonnes posait problème. Nous ne voulions pas d'espace supplémentaire entre les colonnes. Nous voulions simplement que les gouttières soient "transparentes" afin que la couleur de fond du site apparaisse entre deux colonnes blanches.
voici le balisage des deux colonnes
<div class="row">
<div class="col-sm-7">
<div class="raised-block">
<h3>Facebook</h3>
</div>
</div>
<div class="col-sm-5">
<div class="raised-block">
<h3>Tweets</h3>
</div>
</div>
</div>
CSS
.raised-block {
background-color: #fff;
margin-bottom: 10px;
margin-left: 0;
margin-right: -0.625rem; // for us 0.625rem == 10px
padding-left: 0.625rem;
padding-right: 0.625rem;
}
@media (max-width: 33.9em){ // this is for our mobile layout where columns stack
.raised-block {
margin-left: -0.625rem;
}
}
.row [class^="col-"]:first-child>.raised-block {
// this is so the first column has no margin so it will not be "indented"
margin-left: -0.625rem;
}
Cette approche nécessite un div interne avec des marges négatives, comme la classe "row" utilisée par bootstrap. Et ce div, que nous avons appelé "raised-block", doit être le frère direct d'une colonne.
De cette façon, vous obtenez toujours un rembourrage approprié à l'intérieur de vos colonnes. J'ai vu des solutions qui semblent fonctionner en créant de l'espace, mais malheureusement, les colonnes qu'elles créent ont un rembourrage supplémentaire de chaque côté de la rangée, ce qui finit par rendre la rangée plus mince que celle pour laquelle la grille a été conçue. Si vous regardez l'image pour l'aspect souhaité, cela signifie que les deux colonnes ensemble seraient plus petites que la plus grande en haut, ce qui rompt la structure naturelle de la grille.
Le principal inconvénient de cette approche est qu'elle nécessite un balisage supplémentaire pour envelopper le contenu de chaque colonne. Pour nous, cela fonctionne car seules certaines colonnes ont besoin d'espace entre elles pour obtenir l'aspect souhaité.