Автоматический макет прерывается, когда у .col есть дочерний элемент .table

При использовании сетки 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 без указания явной ширины, чтобы он вел себя последовательно? Или другими словами, как сделать так, чтобы в примере обе строки выглядели одинаково — без вертикального разрыва после таблицы.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте 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>

Другие вопросы по теме