johnymkp
@johnymkp

Как заставить отдельные блоки прокручиваться независимо?

Вот основа.
Пробую сделать так, чтобы страница крутилась не целиком, а каждый блок отдельно (меню слева и блок с постами должны иметь независимую прокрутку).

Подобное можно видеть на главной странице ютуба. Через devtools посмотрел как сделано, но из-за кучи служебных блоков может не понял их идею до конца, но мне показалось, что там просто грязные хаки: боковому меню и области со списком найденных видео поставлена явная высота, а хедер просто через z-index поверх них. К тому же не понятно тогда как они сделали зазор в блоках, чтобы сверху была пустота, поверх которой расположится хедер. Еще видел решение на stack'е, но там нет хедера и прокручиваемые блоки тоже растянуты на всю высоту, так что это другое.

Я понимаю, что для того, чтобы блок стал прокручиваемым по вертикали, он должен переполниться, а для этого ему надо поставить явную высоту. Мне удалось добиться нужного эффекта вот так, задав main-блоку высоту как `calc(100vh - 75px)`. Однако решение мне не нравится тем, что приходится по сути хардкодить высоту main-блока. Если высота хедера изменится, работать не будет. Через js тем более не хотелось бы изворачиваться.

Есть ли какой-нибудь более аккуратный способ сделать такую прокрутку?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега CSS
frontend developer
Сделайте раскладку на гридах, нужным блокам задайте overflow:auto

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы