Как создать "липкую" сайдбар, который прокручивается с контентом в CSS?
Создание "липкого" сайдбара в CSS — это довольно распространённая задача, которую можно реализовать с использованием свойства position: sticky
. Это свойство позволяет элементу оставаться на экране даже при прокрутке страницы, пока он находится в пределах родительского контейнера.
Пример реализации
Давайте создадим простой пример, который демонстрирует, как сделать сайдбар "липким".
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Липкий сайдбар</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<aside class="sidebar">
<h2>Сайдбар</h2>
<ul>
<li>Ссылка 1</li>
<li>Ссылка 2</li>
<li>Ссылка 3</li>
<li>Ссылка 4</li>
</ul>
</aside>
<main class="content">
<h1>Основной контент</h1>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
<p>Добавьте много текста здесь, чтобы протестировать прокрутку. Повторите этот текст несколько раз.</p>
</main>
</div>
</body>
</html>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
.container {
display: flex;
}
.sidebar {
width: 200px;
background-color: #f4f4f4;
padding: 15px;
position: sticky;
top: 0; /* элемент "липкий", когда он достигает верхней части окна */
height: 100vh; /* Заставляем сайдбар занимать всю высоту экрана */
}
.content {
padding: 15px;
flex-grow: 1; /* Контент занимает доступное пространство */
max-width: 800px; /* Максимальная ширина основного контента */
}
h1, h2 {
color: #333;
}
Как это работает
<aside>
для сайдбара и <main>
для основного контента.- Установили
display: flex
для контейнера, чтобы сайдбар и контент отображались рядом. - Используем
position: sticky
для сайдбара сtop: 0
, это означает, что сайдбар будет оставаться на верхней части видимой области, когда вы прокручиваете страницу. - Задаём
height: 100vh
сайдбару, чтобы он занимал всю высоту окна браузера.
Заключение
Теперь у вас есть простой пример создания "липкого" сайдбара с помощью CSS. Вы можете доработать данный пример, добавив более сложные элементы стиля, чтобы адаптировать его к своим нуждам. Не забудьте протестировать на разных устройствах, чтобы убедиться, что все работает правильно!