Рендеринг Flexbox не работает с последней версией Chrome

После обновления Chrome (73.0.3683.75) мой гибкий рендеринг полностью сломался.

Проблема известна и обсуждается здесь и здесь на СО, однако я не могу понять их исправление и заставить его работать в моем случае, так как я не очень хорошо знаю CSS и Flex.

я сделал плунжер, который повторяет проблему. Если вы откроете его в Safari, а затем в Chrome, вы заметите совсем другое поведение при изменении размера окна.

Что не так с моим кодом (который работал раньше)?

Вот две иллюстрации плункера:

Дисплей Safari (ОК)

Как видите, при изменении размера окна высота элементов статьи уменьшается, а общая высота остается равной 100% без переполнения. Это ожидаемое поведение. Рендеринг Flexbox не работает с последней версией Chrome

Хромированный дисплей (НЕ ОК)

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

  <head>
    <link data-require = "bootstrap@*" data-semver = "4.1.3" rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" />
    <script data-require = "bootstrap@*" data-semver = "4.1.3" src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
    <link rel = "stylesheet" href = "style.css" />
    <script src = "script.js"></script>
  </head>

  <body>

    <div class = "container-fluid h-100 pt-3 pb-3"
         style = "background-color: green;">

      <div class = "row h-100">
        <div class = "col" style = "background-color: red;">

          <div class = "h-100">

            <div class = "row justify-content-center h-100">

              <div class = "col u-hide-long-text h-100">

                <div class = "list-group h-100 list-group-flush">
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>
                  <a class = "list-group-item d-flex align-items-center justify-content-between list-group-item-action">article n°X</a>

                </div>


              </div>

            </div>

          </div>


        </div>
      </div
    </div>


  </body>

</html>

ПРИМЕЧАНИЕ. НЕ работает в последней версии Firefox.

У вас недостающее звено в цепи. Добавьте height: 100% или класс h-100 к .col. Объяснено в моем ответе здесь: stackoverflow.com/a/31728799/3597276

Michael Benjamin 19.03.2019 18:16
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
11
1
1 658
3

Ответы 3

Пытаться:

.h-100 {
    height: 100vh!important;
}

Проблема как-то связана с использованием height: 100%, если вы измените его на height: 100vh, это приведет к ожидаемому поведению.

Вроде работает, однако при добавлении заголовка в h-10 (и контента в h-90) результат не 100% и полоса прокрутки все равно есть. Вы можете взглянуть на этот обновленный плунжер? Спасибо.

David D. 18.03.2019 14:28

Я считаю, что это связано с тем, что классы содержимого h-100 переопределяют класс родителя h-90. С процентами вы можете определить размер относительно первого родительского контейнера, который имеет display: relative. VH и VW относятся к области просмотра. `

Steven Kuipers 18.03.2019 14:55

Хорошо, спасибо за объяснение. Поскольку я использую много вложенных height: x% в своем проекте, думаю, на этот раз будет сложно использовать vh. Тем не менее, я не понимаю, что не так с моим текущим кодом.

David D. 18.03.2019 15:01

используйте height:100%; на .list-group-item классе

.list-group{
  height:100vh !important; 
}
.list-group-item{
 height:100%;
}

Это не работает при использовании заголовка (см. Другой ответ)

David D. 19.03.2019 10:06

Элемент .col с background-color: red; переполнен. Добавьте к этим исправлениям класс h-100.

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