Add spacing between vertically stacked columns in Bootstrap 4
Use the new Bootstrap 4 spacing utilities. For example mb-3
adds margin-bottom of 1rem
.
No extra CSS is needed.
http://www.codeply.com/go/ECnbgvs9Ez
<div class="container">
<div class="row">
<div class="col-md-4 mb-3">
col 1
</div>
<div class="col-md-4 mb-3">
col 2
</div>
<div class="col-md-4 mb-3">
col 3
</div>
<div class="col-md-4 mb-3">
col 4
</div>
<div class="col-md-4 mb-3">
col 5
</div>
<div class="col-md-4">
col 6
</div>
</div>
</div>
The spacing utils are responsive so you can apply them for specific breakpoints (ie; mb-0 mb-md-3
)
If you want a CSS solution, use the solution explained in the related 3.x question (it's not dependent on using a form): https://jsfiddle.net/zdLy6jb1/2/
/* css only solution */
[class*="col-"]:not(:last-child){
margin-bottom: 15px;
}
Note: the col-lg-4
is extraneous in your markup since col-lg-4 col-md-4
,
is the same as col-md-4
.
see snippet below or jsfiddle
it will work regardless how many cols you have or rows
first ( on big screen ) all rows have margin-bottom
except the last one
then on medium screen , the rows won't have any margin and the cols will all have margin-bottom except the last col from the last row
.row {
margin-bottom:30px;
}
.row:last-child{
margin-bottom:0;
}
.row [class*="col-"] {
border:1px solid red;
}
@media only screen and (max-width: 768px) {
.row {
margin:0
}
.row [class*="col-"] {
margin-bottom:30px;
}
.row:last-child [class*="col-"]:last-child{
margin-bottom:0;
}
}
<body>
<h1 class="display-3">
hey
</h1>
<div class="container">
<div class="row">
<div class="col-md-4 col-lg-4">
col 1
</div>
<div class="col-md-4 col-lg-4">
col 2
</div>
<div class="col-md-4 col-lg-4">
col 3
</div>
</div>
<div class="row">
<div class="col-md-4 col-lg-4">
col 4
</div>
<div class="col-md-4 col-lg-4">
col 5
</div>
<div class="col-md-4 col-lg-4">
col 6
</div>
</div>
</div>
</body>
I just worked through a similar problem with a co-worker. Our solution, using only Bootstrap 4, is as follows:
<div class="col-md-4">
col 1
</div>
<div class="d-block d-md-none col-12 py-3"></div>
<div class="col-md-4">
col 2
</div>
Using the class "w-100" instead of "col-12" for the middle div also works. What's happening here is the d-block makes it display on extra small devices and up, and the d-md-none makes it disappear at medium widths.