Переполнение внутри флекс-контейнера

Есть задача: внутри растянутого флекс-контейнера есть элементы разного размера. Нужно, чтобы, если размеры выходят за пределы контейнера, у элементов включался скролл.

Вот пример кода. Здесь красным выделен общий контейнер, внутри него другие блоки, в том числе контейнер main, в котором 2 блока: один слишком большой (Block1), а другой нормальный (Block2). Сейчас слишком большой блок Block1 растягивает контейнер main, хотя вроде как не должен этого делать.

Мои варианты решения (есть в коде, но закомментированы):

  • можно для контейнера main поставить overflow: hidden;, тогда все сразу работает, как надо (если честно, не знаю, почему именно), но такой вариант не подходит, так как нужно показывать элементы изнутри блоков поверх всего.

  • добавить опять же для контейнера main высоту (в коде 1px). Я такие хаки периодически вижу, но мне не нравится, что это хак.

Есть ли еще варианты получить нужное?

* {
  outline: 1px solid dodgerblue;
}

.content {
  outline: 4px solid tomato;
  height: 200px;
  display: flex;
  flex-direction: column;
}

.main {
/*   overflow: hidden; */
/*   height: 1px; */
  flex-grow: 1;
  display: flex;
  gap: 50px;
  background-color: #ccc;
}

.block {  
  width: 200px;
  overflow: auto;
  background-color: #eee;
}
<div class='content'>
  <header class='header'>Header</header>
  <main class='main'>
    <span>Main</span>
    <div class='block'>
      <h2>Block1</h2>
      <h2>Block1</h2>
      <h2>Block1</h2>
      <h2>Block1</h2>
      <h2>Block1</h2>
      <h2>Block1</h2>
    </div>
    <div class='block'>
      <h2>Block2</h2>
    </div>
  </main>
  <footer class='footer'>Footer</footer>
</div>


Ответы (0 шт):