При использовании сетки Bootstrap автомакет можно явно указать ширину только некоторых столбцов, в то время как остальные столбцы равномерно распределяют оставшееся пространство. Однако, если у одного из авто-.col есть ребенок .table-responsive, вся система, кажется, ломается:
<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous">
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin = "anonymous"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous"></script>
<div class = "container">
<div class = "row">
<div class = "col" style = "height:40px;border: thick solid red">
Row 1: auto-layout .col works fine
</div>
<div class = "col col-3" style = "height:40px;border: thick solid green">
.col .col-3
</div>
</div>
<div class = "row">
<div class = "col" style = "height:120px;border: thick solid red">
Row 2: auto-layout .col > .table-responsive = broken grid
<div class = "table-responsive">
<table class = "table">
<thead>
<tr>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
</tr>
</thead>
</table>
</div>
</div>
<div class = "col col-3" style = "height:120px;border: thick solid green">
.col .col-3
</div>
</div>
</div>Как я могу разместить дочерний элемент .table-responsive в сетке Bootstrap без указания явной ширины, чтобы он вел себя последовательно? Или другими словами, как сделать так, чтобы в примере обе строки выглядели одинаково — без вертикального разрыва после таблицы.






Добавьте overflow: auto в свой table-responsiveparent div
<div class = "col" style = "height:120px;border: thick solid red; overflow-x:auto">
Row 2: auto-layout .col > .table-responsive = broken grid
<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous">
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin = "anonymous"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous"></script>
<div class = "container">
<div class = "row">
<div class = "col" style = "height:40px;border: thick solid red">
Row 1: auto-layout .col works fine
</div>
<div class = "col col-3" style = "height:40px;border: thick solid green">
.col .col-3
</div>
</div>
<div class = "row">
<div class = "col" style = "height:120px;border: thick solid red; overflow:auto">
Row 2: auto-layout .col > .table-responsive = broken grid
<div class = "table-responsive">
<table class = "table">
<thead>
<tr>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
<th style = "min-width:400px">foobarbazbarfoo</th>
</tr>
</thead>
</table>
</div>
</div>
<div class = "col col-3" style = "height:120px;border: thick solid green">
.col .col-3
</div>
</div>
</div>