Подтвердить что ты не робот

Вертикальная проблема рендеринга прокрутки в Flexbox в Firefox

Я хочу содержать гибкий элемент внутри родителя, чтобы он не разливался вне родителя. Только элемент flex должен иметь полосу прокрутки (при необходимости).

Мой стиль отлично работает в Chrome и IE11, но не в Firefox. Я подозреваю, что существует разница в интерпретации стиля flex-basis, установленного на #wrapper, но я не могу понять, почему Firefox делает это по-другому.

Здесь желаемый рендеринг, как показано в Chrome:

Chrome rendering screenshot

И вот что происходит в Firefox:

Firefox rendering screenshot

Я могу применить исправление "клейкой ленты", добавив #left { height: calc(100vh - 50px); }, но я предпочел бы, если возможно, выявить фактическую несогласованность.

body, html, h1 {
  padding: 0;
  margin: 0;
}
header {
  background-color: rgba(0, 255, 255, 0.2);
  height: 50px;
}
#main {
  height: 100vh;
  background-color: rgba(0, 255, 255, 0.1);
  display: flex;
  flex-flow: column;
}
#wrapper {
  display: flex;
  flex-grow: 2;
  flex-basis: 0%;
}
#left {
  overflow-y: scroll;
  background-color: rgba(0, 255, 255, 0.2);
  width: 30%;
}
.box {
  margin: 5px 0;
  height: 50px;
  width: 100%;
  background-color: rgba(0, 0, 0, 0.2);
}
<div id="main">
  <header>
    <h1>Header</h1>
  </header>
  <div id="wrapper">
    <div id="left">
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
    </div>
  </div>
</div>
4b9b3361

Ответ 1

Это связано с flexbox спецификацией подразумеваемый минимальный алгоритм калибровки.

Это ошибка Firefox.

Добавление min-width: 0; min-height: 0 в #wrapper похоже на трюк:

#wrapper {
    display: flex;
    flex-grow: 2;
    flex-basis: 0%;
    min-height: 0; /* NEW */
    min-width: 0; /* NEW */
}

DEMO


Оригинальный ответ Ниже

<я > В настоящее время для #left применяется overflow-y: scroll.

Если вы также применяете overflow-y: scroll к #wrapper, вертикальная прокрутка запускается в Firefox.

Что касается того, почему Firefox интерпретирует код по-другому, чем Chrome, я не могу сказать. У двигателей рендеринга есть свои отличия. Недавно я обратился к еще одной проблеме интерпретации flexbox между IE11 и Chrome:

Дополнительная информация: