Статическое позиционирование является моделью позиционирования по умолчанию для элементов. Они отображаются на странице, где они отображаются как часть обычного потока HTML. Статически расположенные элементы не подчиняются правилам left
, top
, right
и bottom
:
![statically-positioned elements obey normal HTML flow.](https://i.stack.imgur.com/aWcxr.gif)
Относительное позиционирование позволяет вам указать конкретное смещение (left
, top
и т. Д.), Которое относительно нормальной позиции элемента в потоке HTML. Поэтому, если у меня есть текстовое поле внутри div
, я мог бы применить относительное позиционирование к текстовому полю, чтобы оно отображалось в определенном месте относительно того места, где оно обычно размещалось бы в div
:
![relatively-positioned elements obey HTML flow, but provide the ability to adjust their position relative to their normal position in HTML flow.](https://i.stack.imgur.com/Y7CZm.gif)
Существует также абсолютное позиционирование - посредством которого вы указываете точное местоположение элемента относительно всего документа, или следующего относительно позиционированного элемента дальше вверх по дереву элементов :
И когда position: relative
применяется к родительскому элементу в иерархии:
![...or positioned relative to the first parent element in the HTML tree that is relatively positioned.](https://i.stack.imgur.com/F1pK5.gif)
Обратите внимание, как наш абсолютно позиционный элемент связан относительно позиционированным элементом.
И, наконец, это исправлено. Фиксированное позиционирование ограничивает элемент определенной позицией в области просмотра, которая остается на месте во время прокрутки:
![fixed-positioned elements are also taken out of HTML flow, but are not bound by the viewport and will not scroll with the page.](https://i.stack.imgur.com/oInWX.gif)
Вы также можете наблюдать поведение, когда фиксированные элементы не вызывают прокрутку, поскольку они не считаются связанными с окном просмотра:
![fixed-positioned elements have no effect on scroll.](https://i.stack.imgur.com/wK3yM.gif)
Принимая во внимание, что абсолютно позиционированные элементы все еще связаны областью просмотра и вызовут прокрутку:
![absolutely-positioned elements are still affected by the boundaries of the viewport, unless overflow is used on a parent element.](https://i.stack.imgur.com/6Na8O.gif)
.. если, конечно, ваш родительский элемент не использует overflow: ?
для определения поведения прокрутки (если есть).
При абсолютном и фиксированном позиционировании элементы выводятся из потока HTML.