Гибкая реализация 5 общих макетов

flexbox

Sticky Footer

Классическая компоновка сверху-середина-низ.

Когда высота содержимого страницы меньше высоты видимой области, нижний колонтитул поглощается внизу, когда высота содержимого страницы больше высоты видимой области, нижний колонтитул растягивается и располагается ниже содержание

demo link

demo 1 - Sticky Footer
demo 1 - Sticky Footer

<body>
  <header>HEADER</header>
  <article>CONTENT</article>
  <footer>FOOTER</footer>
</body>
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
article {
  flex: auto;
}

Fixed-Width Sidebar

На основе макета сверху-посередине-снизу добавлена ​​левая боковая панель фиксированной ширины.

demo link

demo 2 - Fixed-Width Sidebar
demo 2 - Fixed-Width Sidebar

<body>
  <header>HEADER</header>
  <div class="content">
    <aside>ASIDE</aside>
    <article>CONTENT</article>
  </div>
  <footer>FOOTER</footer>
</body>
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.content {
  flex: auto;
  display: flex;
}
.content article {
  flex: auto;
}

Sidebar

Слева — боковая панель фиксированной ширины, справа — макет «верх-средне-вниз».

demo link

demo 3
demo 3

<body>
  <aside>ASIDE</aside>
  <div class="content">
    <header>HEADER</header>
    <article>CONTENT</article>
    <footer>FOOTER</footer>
  </div>
</body>
body {
  min-height: 100vh;
  display: flex;
}
aside {
  flex: none;
}
.content {
  flex: auto;
  display: flex;
  flex-direction: column;
}
.content article {
  flex: auto;
}

Sticky Header

Это по-прежнему макет верх-средн-низ, разница в том, что заголовок фиксируется вверху и не будет прокручиваться вместе со страницей.

demo link

demo 4 - Sticky Header
demo 4 - Sticky Header

<body>
  <header>HEADER</header>
  <article>CONTENT</article>
  <footer>FOOTER</footer>
</body>
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  padding-top: 60px;
}
header {
  height: 60px;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  padding: 0;
}
article {
  flex: auto;
  height: 1000px;
}

Sticky Sidebar

Левая боковая панель фиксируется слева и имеет ту же высоту, что и область просмотра. Когда содержимое превышает высоту области просмотра, внутри боковой панели появляется полоса прокрутки. Левая и правая полосы прокрутки не зависят друг от друга.

demo link

demo 5 - Sticky Sidebar
demo 5 - Sticky Sidebar

<body>
  <aside>
    ASIDE
    <p>item</p>
    <p>item</p>
    <!-- many items -->
    <p>item</p>
  </aside>
  <div class="content">
    <header>HEADER</header>
    <article>CONTENT</article>
    <footer>FOOTER</footer>
  </div>
</body>
body {
  height: 100vh;
  display: flex;
}
aside {
  flex: none;
  width: 200px;
  overflow-y: auto;
  display: block;
}
.content {
  flex: auto;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
}
.content article {
  flex: auto;
}