Как выровнять столбцы по горизонтали ИЛИ по вертикали в зависимости от области просмотра в Bootstrap 4?

У меня есть следующая установка -

.left {
  height: 100vh;
  background-color: #208ea3;
}

.right {
  height: 100vh;
  background-color: #37a862;
}
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel = "stylesheet" />
<div class = "container-fluid" color = "green">
  <div class = "row justify-content-md-start">

    <div class = "col-lg-3 left d-flex align-items-center justify-content-center" id = "first-section">
      <div class = "text-center">
        <div class = "row-fluid align-items-center justify-content-center h-100">
          <div class = "col-xl-6" id = "dynamic-columns">
              some quotations
          </div>

          <div class = "col-xl-6" id = "dynamic-columns">
            <h3>title</h3>
              Some text  
          </div>
        </div>
      </div>
    </div>

    <div class = "col-lg-9 right" id = "next-section">
      more text
    </div>

  </div>
</div>

Я хочу присвоить свойства #dynamic-columns таким образом, чтобы, когда экран имеет max-height 500 пикселей, столбцы занимали 100% высоты и располагались бок о бок. На данный момент это горизонтальное выравнивание не выполняется, а нижний #dynamic-columns скрывается #next-section, если на нем больше текста.

Мое требование исходит из того факта, что многие телефоны имеют высоту около 500 пикселей в ландшафтном режиме, что не позволяет мне отображать контент в #first-section по вертикали. Таким образом, я хотел бы выровнять их по горизонтали, чтобы первый #dynamic-columns был слева от экрана, а второй справа.

Я подумал, что потребуется следующий запрос, но я не могу найти свойства -

@include (max-height:500px) {
  #dynamic-columns {
      display: ??
    }
    
}

опять неуместные дубликаты, на этот раз прочитав половину заголовка...

Temani Afif 26.12.2020 17:03

новичкам очень сложно найти правильные термины, чтобы найти такие вопросы... спасибо за ответ! оно работает

pg2455 26.12.2020 17:46

эти вопросы совершенно не имеют отношения к вашему вопросу, не волнуйтесь;). Он скоро будет вновь открыт (вы можете прочитать их все, вы не найдете подсказки для решения)

Temani Afif 26.12.2020 20:08
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
0
3
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете попробовать, как показано ниже. Я обновляю версию начальной загрузки до 4.5, чтобы иметь возможность использовать vh-100

.left {
  background-color: #208ea3;
}

.right {
  background-color: #37a862;
}

@media (max-height:500px) {
  .left > div {
      height:100%;
      width:50%;
    }
    
}
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel = "stylesheet" />
<div class = "container-fluid" color = "green">
  <div class = "row">
    <div class = "col-lg-3 vh-100 left d-flex flex-column flex-wrap justify-content-center text-center" id = "first-section">
      <div class = "d-flex flex-column justify-content-center">
        some quotations
      </div>
      <div class = "d-flex flex-column justify-content-center">
        <h3>title</h3>
        Some text
      </div>
    </div>
    <div class = "col-lg-9 vh-100 right" id = "next-section">
      more text
    </div>

  </div>
</div>

Я нашел способ добиться того, что вы ищете, и в чистом CSS. Я надеюсь, что это помогает. Я обнаружил, что вы использовали @include вместо @media.

* {
  margin: 0;
  padding: 0;
}

.flex-container {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

.flex-container div {
  flex-grow: 1;
  color: white;
}

.column-1 {
  background: teal;
}

.column-2 {
  background: blue;
}

@media (max-height: 500px) {
  .flex-container {
    flex-direction: row;
  }
}
<body>
  <div class = "flex-container">
    <div class = "column-1">Column 1</div>
    <div class = "column-2">Column 1</div>
  </div>
</body>

Действительно, OP, вероятно, использует SCSS, откуда взято ключевое слово @include.

TylerH 28.12.2020 18:26

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