
Полосы прокрутки на веб-страницах могут нарушать дизайн или мешать пользовательскому интерфейсу. CSS позволяет скрывать их без отключения возможности прокрутки, что особенно важно для адаптивных макетов и элементов с ограниченным пространством.
Для скрытия вертикальной или горизонтальной полосы прокрутки используют свойство overflow с значением hidden для полного скрытия или scroll/auto с дополнительными приёмами для сохранения прокрутки. Это позволяет управлять видимостью прокрутки на отдельных контейнерах без влияния на другие элементы страницы.
В браузерах на движке WebKit, включая Chrome и Safari, можно применять псевдоэлемент ::-webkit-scrollbar и устанавливать display: none для полного исчезновения полосы прокрутки, сохраняя при этом возможность прокрутки содержимого мышью или сенсорным экраном.
Практика показывает, что скрытие прокрутки должно сопровождаться тестированием на разных устройствах и разрешениях экрана, чтобы элементы не становились недоступными для пользователей. Рекомендовано комбинировать методы overflow и ::-webkit-scrollbar для кроссбраузерной совместимости.
Скрытие вертикальной полосы прокрутки для отдельных элементов

Чтобы скрыть вертикальную полосу прокрутки для конкретного элемента, используют свойство overflow-y с значением hidden. Это предотвращает появление скроллбара при переполнении содержимого, но оставляет возможность взаимодействия с элементом через программные методы или касания на сенсорных устройствах.
Пример применения для блока с фиксированной высотой:
| CSS | Описание |
|---|---|
| height: 200px; | Задаёт высоту контейнера для контроля переполнения. |
| overflow-y: hidden; | Скрывает вертикальную полосу прокрутки. |
Для сохранения функциональности скроллинга внутри блока можно использовать комбинацию overflow-y: hidden; и scroll на вложенном элементе. Такой подход позволяет контролировать видимость полосы прокрутки только на верхнем контейнере, сохраняя возможность прокрутки содержимого.
Важно тестировать блоки с скрытой вертикальной прокруткой на мобильных устройствах. Некоторые браузеры могут автоматически отображать полосу прокрутки при сенсорной прокрутке, поэтому рекомендуется проверять поведение в Chrome, Safari и Firefox отдельно.
Удаление горизонтальной полосы прокрутки с контейнера

Рекомендации по работе с горизонтальной прокруткой:
- Установите фиксированную или максимальную ширину контейнера с помощью width или max-width.
- Применяйте overflow-x: hidden; для блоков, где горизонтальная прокрутка не требуется.
- Используйте box-sizing: border-box; для учёта внутренних отступов и границ при расчёте ширины.
- При необходимости сохраняйте вертикальный скролл через overflow-y: auto; или scroll.
Для динамического содержимого, которое может выходить за пределы контейнера, полезно использовать вложенные блоки:
- Верхний контейнер с overflow-x: hidden; скрывает горизонтальный скролл.
- Внутренний блок с overflow-y: auto; сохраняет вертикальную прокрутку.
- Контролируйте ширину внутреннего блока, чтобы исключить появление горизонтального скролла.
Тестирование в разных браузерах позволяет убедиться, что скрытие горизонтальной полосы прокрутки не влияет на доступность содержимого. Особенно важно проверять адаптивные макеты на мобильных устройствах.
Использование свойства overflow для скрытия прокрутки

Свойство overflow управляет отображением содержимого, которое выходит за границы контейнера. Для скрытия прокрутки применяют значение hidden, что полностью убирает полосы прокрутки и предотвращает визуальное переполнение.
Примеры применения:
- overflow: hidden; – скрывает вертикальную и горизонтальную прокрутку одновременно.
- overflow-x: hidden; – убирает только горизонтальный скролл.
- overflow-y: hidden; – скрывает вертикальный скролл, оставляя горизонтальный.
Для блоков с динамическим содержимым рекомендуется комбинировать overflow: hidden; с фиксированными размерами контейнера через width и height. Это предотвращает появление неожиданных полос прокрутки при изменении контента.
Если необходимо сохранить возможность прокрутки без отображения полос, используют внутренние блоки с overflow: auto; или scroll, а у внешнего контейнера устанавливают overflow: hidden;. Такой подход позволяет скрывать скролл визуально, но не ограничивает функциональность прокрутки.
Применение ::-webkit-scrollbar для браузеров на движке WebKit
Для браузеров на движке WebKit, таких как Chrome и Safari, скрыть полосы прокрутки можно с помощью псевдоэлемента ::-webkit-scrollbar. Установка display: none; делает полосу прокрутки невидимой, сохраняя функциональность скроллинга через колесо мыши или сенсорные события.
Пример CSS:
element::-webkit-scrollbar {
display: none;
}
Псевдоэлемент можно применять к конкретным контейнерам, чтобы не влиять на глобальные полосы прокрутки страницы. Это удобно для модальных окон, внутренних блоков и прокручиваемых списков.
Важно сочетать ::-webkit-scrollbar с overflow для управления поведением прокрутки. Например, overflow-y: scroll; сохраняет возможность вертикальной прокрутки, даже если полоса полностью скрыта.
Метод поддерживается только браузерами на движке WebKit, поэтому для кроссбраузерной совместимости стоит использовать альтернативные подходы, такие как overflow: hidden; или вложенные блоки с управлением скроллом.
Скрытие прокрутки при сохранении возможности скроллинга
Скрыть полосу прокрутки, но сохранить возможность скроллинга, можно с помощью комбинации CSS-свойств и вложенных блоков. Внешний контейнер получает overflow: hidden;, а внутренний – overflow: auto; или scroll. Такой подход позволяет управлять видимостью полосы без потери функциональности прокрутки.
Пример структуры:
Внешний блок скрывает скролл визуально, внутренний обеспечивает прокрутку содержимого. Высоту и ширину внутренних блоков следует задавать точно, чтобы исключить появление неожиданных полос прокрутки.
Для браузеров WebKit дополнительно используют ::-webkit-scrollbar { display: none; } на внутреннем блоке, что полностью убирает визуальные полосы при сохранении прокрутки мышью или жестами.
Метод особенно полезен для списков, галерей и модальных окон, где важно сохранить компактность интерфейса и избежать смещения контента при появлении скролла.
Поддержка разных браузеров при скрытии полос прокрутки
Для кроссбраузерного скрытия полос прокрутки рекомендуется использовать сочетание свойств overflow и псевдоэлементов WebKit. Внешние блоки получают overflow: hidden; для базового скрытия прокрутки, а для Chrome и Safari применяют ::-webkit-scrollbar { display: none; }.
В Firefox можно использовать scrollbar-width: none; для скрытия полос вертикальной и горизонтальной прокрутки. Для Internet Explorer и Edge старых версий применяют -ms-overflow-style: none;.
Пример комплексного подхода для кроссбраузерности:
.element {
overflow: hidden;
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE 10+ */
}
.element::-webkit-scrollbar {
display: none; /* Chrome, Safari, Edge */
}
Такой метод обеспечивает визуальное скрытие полос прокрутки на всех популярных браузерах, сохраняя возможность прокрутки содержимого через мышь, клавиатуру или сенсорные жесты.
Вопрос-ответ:
Как скрыть вертикальную полосу прокрутки для одного блока на странице?
Для конкретного блока используют свойство overflow-y: hidden;. Оно убирает вертикальный скролл, при этом содержимое остаётся доступным для прокрутки через мышь или сенсорные устройства, если использовать вложенные блоки с overflow-y: auto;.
Можно ли скрыть горизонтальную прокрутку, не ограничивая вертикальную?
Да, для этого применяют overflow-x: hidden; к контейнеру. Вертикальная прокрутка при этом остаётся доступной. Для блоков с динамическим содержимым рекомендуется задавать фиксированную или максимальную ширину через width или max-width, чтобы исключить появление горизонтального скролла.
Как скрыть полосу прокрутки в Chrome и Safari?
В браузерах на движке WebKit используют псевдоэлемент ::-webkit-scrollbar с display: none;. Это полностью убирает полосы прокрутки, сохраняя возможность прокрутки содержимого мышью или жестами. Для кроссбраузерного решения его комбинируют с overflow: hidden; на внешнем контейнере.
Можно ли скрыть скролл, но оставить возможность прокручивать содержимое?
Да, используют метод с вложенными блоками: внешний контейнер получает overflow: hidden;, а внутренний блок — overflow: auto; или scroll. Такой подход позволяет убрать видимые полосы, сохранив прокрутку через мышь, клавиатуру или сенсор.
Как обеспечить поддержку разных браузеров при скрытии полос прокрутки?
Для Firefox используют scrollbar-width: none;, для старых версий IE и Edge — -ms-overflow-style: none;, а для Chrome и Safari — ::-webkit-scrollbar { display: none; }. Внешний контейнер дополнительно получает overflow: hidden;. Такой набор свойств скрывает полосы прокрутки на всех популярных браузерах и сохраняет возможность прокрутки.
Как скрыть полосы прокрутки на странице, но при этом сохранить возможность прокрутки содержимого?
Для сохранения прокрутки при скрытых полосах используют комбинацию CSS-свойств и вложенных блоков. Внешний контейнер получает overflow: hidden;, что убирает видимые полосы прокрутки, а внутренний блок получает overflow: auto; или scroll. В браузерах на движке WebKit дополнительно применяют ::-webkit-scrollbar { display: none; }. Такой метод позволяет прокручивать содержимое мышью, клавиатурой или сенсорными жестами, при этом интерфейс остаётся компактным и чистым. Рекомендуется задавать точные размеры внутренних блоков, чтобы исключить появление неожиданных полос прокрутки.
