Добавить расстояние между вертикально уложенными столбцами в Bootstrap 4
к сожалению, не существует хорошего способа управления вертикальным расстоянием между столбцами, которые переходят из горизонтального стека в вертикальный стек в определенных точках останова. Кажется, есть решение, когда форма участвует, но здесь не такая ситуация. Я пробовал это решение, но он не работает, когда есть несколько столбцов, которые переносятся в строку.
чтобы проиллюстрировать мой сценарий, вот структура моего HTML:
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
col 1
</div>
<div class="col-md-4">
col 2
</div>
<div class="col-md-4">
col 3
</div>
<div class="col-md-4">
col 4
</div>
<div class="col-md-4">
col 5
</div>
<div class="col-md-4">
col 6
</div>
</div>
</div>
</body>
https://jsfiddle.net/b74a3kbs/6/
при среднем размере устройства (md) и выше я хотел бы, чтобы между двумя "строками" столбцов было расстояние, но не было расстояния выше "первой строки" из 3 столбцов и ни одного Ниже "второй строки" из 3 столбцов. Когда столбцы складываются вертикально ниже среднего размера устройства( md), я хотел бы, чтобы между каждым из столбцов был интервал, но ни один выше первого ребенка и ни один ниже последнего ребенок.
в идеале, решение будет работать независимо от того, сколько столбцов (например, 3, 5, 6, 12) содержатся в строке.
3 ответов
используйте новый Bootstrap 4 интервал ЖКХ. Например mb-3
добавляет маржу-дно 1rem
.
дополнительный CSS не требуется.
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>
utils интервалов реагируют, поэтому вы можете применять их для определенных точек останова (т. е.; mb-0 mb-md-3
)
если вы хотите решение CSS используйте решение объяснили в соответствующем 3.икс вопрос (это не зависит от использования формы): https://jsfiddle.net/zdLy6jb1/2/
/* css only solution */
[class*="col-"]:not(:last-child){
margin-bottom: 15px;
}
Примечание:col-lg-4
является посторонним в вашей разметке, так как col-lg-4 col-md-4
,
это то же самое, что col-md-4
.
см. Фрагмент ниже или jsfiddle
он будет работать независимо от того, сколько столбцов у вас есть или строки
первый ( на большом экране ) все строки margin-bottom
кроме последнего
затем на среднем экране строки не будут иметь никакого поля, а cols будут иметь нижний край, кроме последний col С последние строки
.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>
вот как я закончил эту работу:
.row [class*="col-"] {
@extend .mb-4;
&:last-child {
@extend .mb-0;
}
@extend .mb-md-5;
&:nth-last-of-type(1),
&:nth-last-of-type(2),
&:nth-last-of-type(3) {
@extend .mb-md-0;
}
}