Вы можете использовать display: contents
(что, к сожалению, не очень хорошо поддерживается ) в сочетании с макетом flexbox с переносом, установленным на элементе .wrapper
.Таким образом, заголовки вкладок и содержимое вкладок будут обрабатываться одинаково, как если бы они находились на одном уровне друг с другом - элементы .container «прозрачны» для механизма компоновки.В результате все они будут размещены с применением логики flexbox.Наконец, чтобы сначала отображались три заголовка вкладки, мы устанавливаем порядок содержимого вкладки в какое-то высокое значение (здесь 100), и, поскольку у нас включена гибкая перенос, содержимое затем перемещается вниз к новой строке под заголовками.,Смотрите пример ниже:
.wrapper {
max-width: 300px;
display: flex;
flex-wrap: wrap;
height: 100%;
}
.container {
height: 50px;
display: contents;
}
.container .tab-header {
width: 100px;
max-width: 100%;
max-height: 100%;
flex: 1 0 33.33%;
}
.container .tab-content {
display: none;
height: 200px;
order: 100;
}
.container.current .tab-content {
display: block;
width: 300px;
left: 0;
}
.footer {
height: 500px;
width: 300px;
display: block;
}
.red {
background: red;
}
.teal {
background: teal;
}
<div class="wrapper">
<div class="container">
<div class="tab-header">Tab1</div>
<div class="tab-content teal">Content1</div>
</div>
<div class="container current">
<div class="tab-header">Tab2</div>
<div class="tab-content teal">Content2</div>
</div>
<div class="container">
<div class="tab-header">Tab3</div>
<div class="tab-content teal">Content3</div>
</div>
</div>
<div class="footer red">Footer Text</div>