overflow — CSS | MDN
Свойство CSS overflow
определяет, необходимо ли для переполненного блочного элемента содержимое обрезать, предоставить полосы прокрутки или просто отобразить.
Использование свойства overflow
со значениями, отличными от visible
, (значение, принятое по умолчанию), создаёт новый блочный контекст форматирования (en-US). Это технически необходимо, поскольку если бы float пересекался с элементом прокрутки, это потребовало бы обеспечить обтекание содержимого прокручиваемого элемента вокруг вторгающихся float’ов. Обтекание при этом было бы необходимо производить после каждого шага прокрутки заново, что привело бы к заметному замедлению прокрутки. Обратите внимание, что при программной установке атрибута scrollTop
для соответствующего HTML-элемента, даже если overflow
имеет значение hidden
, элемент, возможно, придётся прокрутить.
Начальное значение | visible |
---|---|
Применяется к | Block-containers, flex containers, and grid containers |
Наследуется | нет |
Обработка значения | как и у каждого из подсвойств этого свойства:
|
Animation type | discrete |
Формат синтаксиса (en-US):
overflow =
[ (en-US) visible | (en-US) hidden | (en-US) clip | (en-US) scroll | (en-US) auto ] (en-US){1,2} (en-US)
overflow: visible overflow: hidden overflow: scroll overflow: auto overflow: inherit
Значения
visible
По умолчанию. Содержимое не обрезается, может отображаться снаружи блока, в котором оно расположено.
hidden
Контент обрезается, без предоставления прокрутки.
scroll
Содержимое обрезается и браузер использует элементы прокрутки, не важно было ли обрезано содержимое или нет. Это избегает многих проблем касательно появления прокруток и их исчезновения в динамичной среде. Принтеры могут печатать переполненное содержимое.
auto
Зависит от агента пользователя. Браузеры такие как Firefox предоставляют прокрутку, если содержимое переполняет блок.
Расширения Mozilla
-moz-scrollbars-none
Используйте
overflow:hidden
.-moz-scrollbars-horizontal
УстарелоИспользование
overflow-x
(en-US) иoverflow-y
(en-US) предпочтительнее.-moz-scrollbars-vertical
УстарелоИспользование
overflow-x
(en-US) иoverflow-y
(en-US) предпочтительнее.- -moz-hidden-unscrollable Non-standard
Главным образом предназначен для внутреннего использования и для тем. Отключает прокрутку XML root элементов и
<html>
,<body>
клавишами со стрелками и колесом мыши.
p { width: 12em; height: 6em; border: dotted; overflow: visible; /* содержимое не обрезается */ }
visible
(default)
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: hidden; /* полосы прокрутки не предоставляются */ }
overflow: hidden
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: scroll; /* всегда показывать полосы прокрутки */ }
overflow: scroll
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: auto; /* добавить полосы прокрутки, если это необходимо */ }
overflow: auto
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
Спецификация | Статус | Комментарий |
---|---|---|
CSS Overflow Module Level 3 Определение ‘overflow’ в этой спецификации. | Рабочий черновик | Changed syntax to allow one or two keywords instead of only one |
CSS Box Model Определение ‘overflow’ в этой спецификации. | Кандидат в рекомендации | Без изменений |
CSS Level 2 (Revision 1) Определение ‘overflow’ в этой спецификации. | Рекомендация | Initial definition. |
BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Firefox (Gecko) Примечания
Из-за Firefox 3.6 (Gecko 1.9.2), свойство overflow неверно применяется к элементам
table-group (<thead>
, <tbody>
, <tfoot>
). Это поведение будет исправлено в следующих версиях.
Internet Explorer Примечания
Internet Explorer 4 — 6 увеличивает элемент с overflow:visible
(значение по умолчанию), чтобы заполнить содержимое в нём. height/width
действуют подобно min-height/min-width
.
- Связанные свойства CSS:
text-overflow
white-space
,overflow-x
(en-US),overflow-y
(en-US),overflow-inline
(en-US),overflow-block
,clip
(en-US),display
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
Want to get more involved?
Learn how to contribute.
This page was last modified on by MDN contributors.
Базовые концепции CSS Scroll Snap — CSS
Спецификация CSS Scroll Snap даёт нам возможность реализовывать прокрутку документа с привязкой к определённым точкам. Это может быть полезно в создании интерфейса, по своей работе больше похожего на мобильное приложение.
Ключевыми свойствами спецификации Scroll Snap являются scroll-snap-type
и scroll-snap-align
(en-US). Свойство scroll-snap-type
применяется к скролл-контейнеру для определения типа и направления прокрутки.
Свойство scroll-snap-align
нужно применять к дочерним элементам, чтобы указать позицию, к которой будет привязана прокрутка. Пример ниже демонстрирует прокрутку с привязкой вдоль оси y
, а свойство scroll-snap-align
применяется для элемента «section», чтобы задать точку, на которой прокрутка должна остановиться.
Свойство scroll-snap-type
необходимо, чтобы задавать направление, в котором будет происходить привязка прокрутки. Значением свойства может быть x
, y
, или соответствующие логические block
или inline
. Также можно использовать ключевое слово both
, чтобы привязка работала в обоих направлениях.
Также можно передавать ключевые слова mandatory
, или proximity
. Ключевое слово mandatory
определяет обязательное смещение прокрутки браузера к ближайшей точке привязки. Ключевое слово proximity
означает, что привязка может произойти , но не обязательно.
Использование mandatory
делает взаимодействие с интерфейсом однородным и предсказуемым — вы знаете, что браузер всегда будет смещать область видимости к каждой заданной точке привязки. Это даёт уверенность в том, что в после прокрутки экрана, в его верхней части окажется именно то, что вы и ожидаете там увидеть.Однако, это может привести и к проблемам, если содержимое слишком большое по высоте — пользователи могут оказаться в очень неприятной ситуации, не имея возможности переместиться к определённому месту на странице странице. Следовательно, применение mandatory
должно быть тщательно продуманным и использовано только в тех ситуациях, когда вы точно знаете, какое количество содержимого будет на экране в каждый момент времени.
При значении proximity
привязка будет осуществляться только в тех ситуациях, когда область видимости находится достаточно близко к точке привязки. Определение точного расстояния, на котором это будет происходить, остаётся за браузером. В примере ниже вы можете изменить значение с mandatory
на proximity
, чтобы увидеть, как это влияет на работу прокрутки.
Свойство scroll-snap-align
(en-US) может принимать значения start
, end
, или center
, обозначающие, какую сторону контейнера прижимать к дочернему элементу. В примере ниже вы можете изменить значение scroll-snap-align
, чтобы увидеть, как это повлияет на работу прокрутки.
Если вы не хотите, чтобы содержимое вплотную прилегало к краю прокручиваемого контейнера, можете воспользоваться сокращённым свойством scroll-padding
(en-US) или альтернативными ему более конкретными свойствами scroll-padding-*
, чтобы задать для прокрутки внутренние отступы с каждой стороны контейнера.
В примере ниже для свойства scroll-padding
установлено значение 40 пикселей. Когда происходит смещение к началу второй и третьей секции, прокрутка останавливается в 40 пикселях от начала элемента. Попробуйте изменить значение свойства scroll-padding
, чтобы увидеть изменение размера отступа.
Это может быть полезно в ситуации, когда у вас есть фиксированно позиционированный элемент. Например, панель навигации, которая может перекрывать содержимое. С помощью scroll-padding
вы можете оставить место для панели, как это сделано в примере ниже, где <h2>
остаётся на экране, а содержимое при прокрутке оказывается под панелью. Без отступов шапка перекроет некоторую часть содержимого, когда произойдёт смещение к привязанной точке.
Свойство scroll-margin
(en-US) может быть задано для дочерних элементов и определяет, по сути, внешний отступ данного элемента до позиции прокрутки. Это позволяет дочерним элементам занимать разное количество места, и может использоваться в сочетании со свойством scroll-padding
для родителя. Опробуйте его в примере ниже
Свойство scroll-snap-stop
(en-US) сообщает браузеру, обязательно ли ему останавливаться на каждой точке привязки дочерних элементов (это значит, что в примере выше мы бы останавливались в начале каждой секции) или допускается возможность пропускать их. Это свойство реализовано в меньшем количестве браузеров, чем другие свойства из данной спецификации.
Данное свойство может быть полезно в ситуации, когда нужно, чтобы пользователь гарантированно увидел каждую прокручиваемую секцию, случайно не пролистав какую-то из них. С другой сторона, такое поведение прокрутки может только мешать и замедлять пользователя, который ищет конкретную секцию.
Примечание: на данный момент свойство scroll-snap-stop
помечено рискованным для использования в данной версии спецификации, следовательно может быть вообще удалено.
На страницах каждого свойства Scroll Snap содержатся подробности поддержки браузерами. Обратите внимание, что до версии 68, в браузере Firefox была реализована поддержка старой версии спецификации. Читайте следующее руководство (en-US), чтобы узнать, как писать код, который будет поддерживаться всеми браузерами.
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
Want to get more involved?
Learn how to contribute.
This page was last modified on 000Z»>7 нояб. 2022 г. by MDN contributors.
javascript — прокрутка CSS с верхним переполнением
спросил
Изменено 2 года, 2 месяца назад
Просмотрено 2к раз
Я пытаюсь сделать так, чтобы элементы div, содержащие короткие текстовые строки, появлялись (используя JS) в середине пустой страницы, при этом новые элементы всегда центрировались, а старые элементы перемещались вверх (аналогично тому, как будет выглядеть сеанс консоли или терминала). Элементы, которые исчезают в верхней части страницы, следует просматривать, прокручивая вверх (т. е. назад во времени).
Следующий код работает, но полосы прокрутки не появляются. Почему это?
HTML
#словарь { положение: фиксированное; переполнение: прокрутка; поле: 0 авто; низ: 50%; слева: 40%; выравнивание текста: по левому краю; } . слово { // Просто шрифт и цвет }
<тело> <дел>что угодночто угодночто угодночто угодно