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
На основе макета сверху-посередине-снизу добавлена левая боковая панель фиксированной ширины.
<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
Слева — боковая панель фиксированной ширины, справа — макет «верх-средне-вниз».
<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
Это по-прежнему макет верх-средн-низ, разница в том, что заголовок фиксируется вверху и не будет прокручиваться вместе со страницей.
<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
Левая боковая панель фиксируется слева и имеет ту же высоту, что и область просмотра. Когда содержимое превышает высоту области просмотра, внутри боковой панели появляется полоса прокрутки. Левая и правая полосы прокрутки не зависят друг от друга.
<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;
}