Контейнер Boostrap переполнен и не реагирует (всегда отображаются два столбца) - PullRequest
1 голос
/ 28 мая 2020

Я создал форму с двумя столбцами. Но когда я уменьшаю ширину браузера, два столбца сохраняются, даже когда их содержимое переполняется. Я попытался изменить код на простой DIV с классом контейнера, указать количество столбцов, установить ширину, но он сопротивляется.

Вот код: https://codesandbox.io/s/stoic-goldberg-4ugt6

и исходный код родительского контейнера:

<div class="container flex-wrap pt-3 w-75 ml-auto mr-auto mt-auto mb-5">
  <div class="row">
    <div class="col">
      <b-card>
        <SeriesForm />
      </b-card>
    </div>
    <div class="col">
      <b-card :header="captions[1]">
        <SeriesForm :group="forms[1]" />
      </b-card>
    </div>
  </div>
  <div class="row">
    <div class="col text-center p-4">
      <b-button>Analyse</b-button>
    </div>
  </div>
</div>

Как я могу сделать два столбца, когда есть достаточно места, и один столбец в противном случае?

enter image description here

Ответы [ 4 ]

2 голосов
/ 28 мая 2020

Вы можете попробовать класс, например col-sm-6 или col-xs-6, col-md-6 или col-lg-6, в зависимости от ваших потребностей.

<div class="container flex-wrap pt-3 w-75 ml-auto mr-auto mt-auto mb-5">
  <div class="row">
    <div class="col-sm-6">
      <b-card>
        <SeriesForm />
      </b-card>
    </div>
    <div class="col-sm-6">
      <b-card :header="captions[1]">
        <SeriesForm :group="forms[1]" />
      </b-card>
    </div>
  </div>
  <div class="row">
    <div class="col text-center p-4">
      <b-button>Analyse</b-button>
    </div>
  </div>
</div>
1 голос
/ 29 мая 2020

Проблема не в самой сетке bootstrap, проблема в том, как отображаются ваши флажки.

Вы определяете в классе .align-nicely, что ваша группа флажков всегда должна быть 3 столбца. display: grid не так уж и умен. Итак, если вы укажете, что это 3 столбца, это будет 3 столбца и все остальное будет игнорироваться. Вот почему ваш контент переполняется.

Итак, чтобы исправить проблему или хотя бы улучшить ее. Вы должны изменить способ обработки столбцов display: grid.

Один из способов - использовать запросы CSS @media, чтобы определить, сколько столбцов должно быть при заданной ширине экрана. Таким образом, вы можете масштабировать их по мере уменьшения экрана.

Приведенный ниже CSS должен работать, если вы используете <b-col xl='6'> с текущим текстом.

.align-nicely {
  display: grid;
  grid-column-gap: 10px;
  grid-row-gap: 10px;
  grid-template-columns: 1fr 1fr 1fr;
}

@media screen and (max-width: 1350px) {
  .align-nicely {
    grid-template-columns: 1fr 1fr;
  }
}

@media screen and (max-width: 576px) {
  .align-nicely {
    grid-template-columns: 1fr;
  }
}

Другое решение может быть для использования функции repeat() в сочетании с minmax(). Этот вариант будет намного более динамичным c, чем первый, но нарушит выравнивание между вашими различными группами.

.align-nicely {
  display: grid;
  grid-column-gap: 10px;
  grid-row-gap: 10px;
  /* 
    The 110px inside minmax(), is how small each column is allowed to get.
    So if there isn't space on the current row for the column to be over 110px, 
    it will be moved to a new row. So you will need to adjust this based on your content size.
  */
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
}
1 голос
/ 28 мая 2020

Я добавил атрибут к вашим тегам this image shows the code changed and also the form in the format you wanted.

Если вы развернете экран, то u получит исходный формат.

1 голос
/ 28 мая 2020

Это происходит из-за гибкого дисплея,

вам нужно установить столбцы под строкой для каждой формы:

используйте это <div class='col-12 col-xl-6'> вместо <div class='col'> .. интервал немного плотный, поэтому вам может потребоваться удалить некоторые поля и отступы

это заставит каждую форму принимать всю ширину на больших экранах и ниже и сделает их шириной 50% на xl экраны

...