J'ai eu des problèmes similaires avec l'espace entre les colonnes. Le problème racine est que les colonnes du bootstrap 3 et 4 utilisent un remplissage 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 fonctionnera très probablement pour la plupart des gens qui tentent d'espacer les colonnes et de maintenir les mêmes largeurs de gouttière que le reste du système de grille.
C'était le résultat final que nous recherchions
Il était problématique d'avoir l'écart avec une ombre portée entre les colonnes. Nous ne voulions pas d'espace supplémentaire entre les colonnes. Nous voulions juste que les gouttières soient "transparentes" pour que la couleur de fond du site apparaisse entre deux colonnes blanches.
c'est le balisage pour les 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, tout comme le bootstrap de classe "row". Et ce div, nous l'avons appelé "bloc surélevé", doit être le frère direct d'une colonne
De cette façon, vous obtenez toujours un remplissage correct à 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 ligne, ce qui finit par rendre la ligne plus mince pour laquelle la disposition de la grille a été conçue. Si vous regardez l'image pour obtenir l'apparence souhaitée, cela signifierait que les deux colonnes ensemble seraient plus petites que celle plus grande en haut, ce qui brise la structure naturelle de la grille.
L'inconvénient majeur de cette approche est qu'elle nécessite un balisage supplémentaire enveloppant le contenu de chaque colonne. Pour nous, cela fonctionne car seules des colonnes spécifiques ont besoin d'espace entre elles pour obtenir l'apparence souhaitée.