Вертикально сложенный последний DIV, чтобы заполнить / подогнать остальную часть контейнера, используя Bootstrap 4 - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать компоновку, которая будет реагировать, используя Bootstrap 4. Проблема, с которой я сталкиваюсь, заключается в том, что когда два div делятся вертикально для меньшего устройства, верхний div выглядит как pu sh нижний div, превышающий родительский контейнер (см. изображения ниже). Я хочу, чтобы нижний тег помещался в контейнере. Как этого добиться, используя Bootstrap 4 или минимальный css?

Я добавил желтую рамку в нижней части второго блока, чтобы мы могли видеть pu sh.

Просмотр большого устройства

Просмотр малого устройства

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
  width: 100%;
  overflow-x: hidden;
  overflow-y: hidden;
}

.bottom-border {
  border-bottom: 50px solid yellow;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<body>
  <div class="container-fluid p-0 h-100">
    <div class="row h-100">
      <div class="col-md-8 bg-primary h-md-100 ">
        <div class="d-md-none text-center bg-primary">
          <h5>Left Section</h5>
        </div>
        <div class="d-none d-md-block m-3">
          <h1>Left Section</h1>
        </div>
      </div>
      <div class="col-md-4 h-100 text-center bg-danger bottom-border">
        <h4>Right Section</h4>
      </div>
    </div>
  </div>
</body>

Ответы [ 2 ]

1 голос
/ 22 января 2020

После того, как вы объяснили значение высоты границы, теперь я понимаю, что вы имеете в виду, как упоминалось ранее, ваши h-100 классы являются проблемой.

Этот класс говорит элементу использовать 100% его Высота родительского элемента, поскольку вы помещаете этот класс в основные элементы container и row, эти два элемента используют полноэкранную высоту, поскольку родительским элементом контейнера является окно браузера, а родительским элементом строки является контейнер.

Когда вы используете тот же класс для дочернего элемента div, в данном случае для красного элемента div, он также пытается использовать полную высоту своего родителя (строки), но он не учитывает другой элемент внутри ( синий div), если вы удалите класс h-100 из красного div, то каждый из них будет использовать половину доступного пространства.

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
  width: 100%;
  overflow-x: hidden;
  overflow-y: hidden;
}

.bottom-border {
  border-bottom: 50px solid yellow;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />

<body>
  <div class="container-fluid h-100">
    <div class="row h-100 flex-column flex-md-row">
      <div class="col-md-8 bg-primary">
        <div class="d-md-none text-center bg-primary">
          <h5>Left Section</h5>
        </div>
        <div class="d-none d-md-block m-3">
          <h1>Left Section</h1>
        </div>
      </div>
      <div class="col-md-4 flex-grow-1 text-center bg-danger bottom-border">
        <h4>Right Section</h4>
      </div>
    </div>
  </div>
</body>
0 голосов
/ 22 января 2020

Если я правильно понимаю, вы бы sh держали левый и правый разделители не go поверх друг друга?

col- md означает все, что размер окна превышает 768 пикселей, сохранить это количество столбцов. если вы используете col- sm , это будет все, что выше 576px. Если вы просто скажете col- число , вы будете реагировать на это независимо от ширины контейнера.

html,
        body {
            height: 100%;
            margin: 0;
            padding: 0;
            width: 100%;
            overflow-x: hidden;
            overflow-y: hidden;
        }

        .bottom-border {
            background-color: yellow;
        }
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
<body>

<div class="container-fluid p-0 ">

        <div class="d-flex flex-row flex-wrap bd-highlight text-center ">
            <div class="col-md-8  ">
                <div class="  h-100 bg-primary">left</div>
            </div>
            <div class="flex-column col-md-4">
                <div class="  bg-danger ">Right</div>
                <div class=" bottom-border ">Bottom</div>
            </div>
        </div>
    </div>
    </body>

Кроме того, поскольку вы используете Bootstrap 4, я бы также рекомендовал проверить Flex , который вы в основном поставили d- Согните класс на родителя и весь ребенок станет отзывчивым. Вы можете сделать их еще более точными с помощью колонок, как вы это делали, но Flexbox довольно мощный и действительно полезен, когда вы знаете, как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...