Как сделать скролл внутри блока css
5 лет назад
Человек-Молекула
Ответы
Для создания блока фиксированного размера с возможностью прокрутки по горизонтали и вертикали необходимо использовать свойство overflow.
Overflow может принимать следующие значения:
- visible: По умолчанию. Содержимое не обрезается, может отображаться снаружи блока, в котором оно расположено.
- hidden: Контент обрезается, без предоставления прокрутки.
- scroll: Содержимое обрезается и браузер использует элементы прокрутки, не важно было ли обрезано содержимое или нет. Это избегает многих проблем касательно появления прокруток и их исчезновения в динамичной среде. Принтеры могут печатать переполненное содержимое.
- auto: Зависит от агента пользователя. Браузеры такие как Firefox предоставляют прокрутку, если содержимое переполняет блок.
Рассмотрим пример.
Исходный HTML документ:
Стили:
Результат:
4 года назад
Вячеслав Межуревский
А если блок адаптивный, а мне нужно сделать горизонтальный скрол?
3 года назад
Джими Пяточка
ого
4 года назад
Alex
огого
4 года назад
Alex
Не работает, когда размер блока установлен в %, но меня выручило position: fixed и background: white для другого блока
2 года назад
Николай м
Прокрутка внутри блока появляется, когда у блока ограничен размер и задан overflow:
auto показывает полосу прокрутки только при необходимости, scroll — всегда.
Горизонтальный скролл в адаптивном блоке
В комментарии спрашивали, как сделать горизонтальную прокрутку, если ширина блока резиновая. Ширину задавать не нужно — достаточно запретить перенос содержимого:
Блок займёт доступную ширину, а элементы, которые не поместились, уйдут в прокрутку. Для текста: white-space: nowrap; overflow-x: auto;.
Широкие таблицы на телефоне оборачивают в блок со скроллом:
Не работает при высоте в процентах
Ещё один вопрос из комментариев. height: 50% считается от высоты родителя. Если у родителя высота не задана, процент не работает, и блок растягивается по содержимому — прокрутки нет.
Решения:
- задайте высоту в
vhили пикселях:max-height: 60vh; - задайте высоту всей цепочке родителей, вплоть до
htmlиbody; - во flex-колонке растяните блок через
flex: 1и добавьтеmin-height: 0:
Без min-height: 0 flex-элемент растягивается по содержимому и не даёт прокрутки — это самая частая причина.
Оформление полосы прокрутки
Прокрутка не уходит на страницу
Когда список докручен до конца, прокрутка переходит на страницу. Запретить:
Прокрутку и flexbox разбирают в курсе «Профессиональная вёрстка».
10 дней назад
Никита Вихров






