Разница между статическим и относительным позиционированием - PullRequest
76 голосов
/ 16 февраля 2011

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

Ответы [ 7 ]

147 голосов
/ 16 февраля 2011

Статическое позиционирование является моделью позиционирования по умолчанию для элементов. Они отображаются на странице, где они отображаются как часть обычного потока HTML. Статически расположенные элементы не подчиняются правилам left, top, right и bottom:

statically-positioned elements obey normal HTML flow.

Относительное позиционирование позволяет вам указать конкретное смещение (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.

Существует также абсолютное позиционирование - посредством которого вы указываете точное местоположение элемента относительно всего документа, или следующего относительно позиционированного элемента дальше вверх по дереву элементов :

absolutely-positioned elements are taken out of HTML flow and can be positioned at a specific place in the document...

И когда position: relative применяется к родительскому элементу в иерархии:

...or positioned relative to the first parent element in the HTML tree that is relatively positioned.

Обратите внимание, как наш абсолютно позиционный элемент связан относительно позиционированным элементом.

И, наконец, это исправлено. Фиксированное позиционирование ограничивает элемент определенной позицией в области просмотра, которая остается на месте во время прокрутки:

fixed-positioned elements are also taken out of HTML flow, but are not bound by the viewport and will not scroll with the page.

Вы также можете наблюдать поведение, когда фиксированные элементы не вызывают прокрутку, поскольку они не считаются связанными с окном просмотра:

fixed-positioned elements have no effect on scroll.

Принимая во внимание, что абсолютно позиционированные элементы все еще связаны областью просмотра и вызовут прокрутку:

absolutely-positioned elements are still affected by the boundaries of the viewport, unless overflow is used on a parent element.

.. если, конечно, ваш родительский элемент не использует overflow: ? для определения поведения прокрутки (если есть).

При абсолютном и фиксированном позиционировании элементы выводятся из потока HTML.

7 голосов
/ 16 февраля 2011

Вы можете увидеть простой обзор здесь: W3School

Кроме того, если я правильно помню, при объявлении относительного элемента он по умолчанию будет оставаться в том же месте, что и в противном случае, но вы получаете возможность абсолютно позиционировать элементы внутри него относительно этого элемента, что я нашел очень полезным в прошлом.

5 голосов
/ 16 февраля 2011

Положение относительное позволяет использовать верхнюю / нижнюю / левую / правую для позиционирования.Static не позволит вам сделать это, если вы не используете параметры поля.Существует разница между Top и margin-top.

Вам не нужно много использовать static, так как это по умолчанию

3 голосов
/ 14 октября 2016

В ответ на вопрос «почему CSS все-таки реализует position: static;» в одном сценарии использование position: относительный для родителя и position: absolute для дочернего элемента ограничивает ширину масштабирования дочернего элемента. В горизонтальной системе меню, где у вас могут быть «столбцы» ссылок, использование «width: auto» не работает с относительными родителями. В этом случае изменение его на «статическое» позволит переменной ширине зависеть от содержимого внутри.

Я провел несколько часов, размышляя о том, почему я не могу настроить свой контейнер в зависимости от количества содержимого в нем. Надеюсь, это поможет!

2 голосов
/ 25 мая 2016

Статический: Позиционированный элемент STATIC - это то, что мы получаем с помощью DEFAULT (Нормальное позиционирование объектов).

Относительный: Относительно его текущей позиции, номожет быть перемещен.Или ОТНОСИТЕЛЬНЫЙ позиционированный элемент позиционируется относительно СЕБЯ.

2 голосов
/ 08 сентября 2015

Мэтью Эбботт имеет действительно хороший ответ.

Абсолютные и относительные позиции подчиняются командам top, left, right и bottom (смещения), где статические позиции нет.

Относительно расположенные элементы смещаются относительно того места, где они обычно находятся в html.

Абсолютно позиционированные элементы перемещают смещения из документа или следующего относительно позиционированного элемента вверх по дереву DOM.

2 голосов
/ 07 сентября 2012

Относительное положение относительно нормального потока. Относительная позиция этого элемента (со смещением) относительно позиции, в которой этот элемент был бы нормально, если бы не был перемещен.

...