Для достижения такого эффекта можно использовать флексбокс (flexbox) или сетку (grid).
Вариант с флексбоксом:
1. Создайте общий контейнер, который будет содержать все элементы страницы, включая шапку, подвал и центральную часть.
2. Установите у этого контейнера стиль `display: flex;` для применения флексбокса.
3. Задайте центральной части стиль `flex: 1;`, чтобы она занимала все доступное пространство в контейнере.
4. Установите для шапки и подвала фиксированную высоту или задайте им нужные стили.
Пример кода:
HTML:
```html
<div class="container">
<header class="header">Шапка</header>
<main class="content">Центральная часть</main>
<footer class="footer">Подвал</footer>
</div>
```
CSS:
```css
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.header {
height: 50px; /* Задайте нужную высоту */
}
.content {
flex: 1;
}
.footer {
height: 50px; /* Задайте нужную высоту */
}
```
Вариант со сеткой (grid):
1. Создайте общий контейнер, который будет содержать все элементы страницы, включая шапку, подвал и центральную часть.
2. Установите у этого контейнера стиль `display: grid;` для применения сетки.
3. Задайте необходимую структуру сетки, например, главную строку для центральной части и дополнительные строки для шапки и подвала.
4. Установите для шапки и подвала фиксированные размеры или нужные стили.
Пример кода:
HTML:
```html
<div class="container">
<header class="header">Шапка</header>
<main class="content">Центральная часть</main>
<footer class="footer">Подвал</footer>
</div>
```
CSS:
```css
.container {
display: grid;
grid-template-rows: auto 1fr auto; /* Структура сетки: шапка, центральная часть, подвал */
min-height: 100vh;
}
.header {
height: 50px; /* Задайте нужную высоту */
}
.content {
/* Не требуется дополнительных стилей */
}
.footer {
height: 50px; /* Задайте нужную высоту */
}
```
Оба этих варианта позволят растягивать шапку и подвал вместе с контентом, при этом учитывая фиксированные размеры.