Разница между статическим и относительным позиционированием

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

7 ответов


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

statically-positioned elements obey normal HTML flow.

относительное позиционирование позволяет указать смещение (left, top etc), который относительно нормального положения элемента в потоке 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.


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

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


Position relative позволяет использовать верхний/нижний/левый/правый для позиционирования. Static не позволит вам сделать это, если вы не используете параметры маржи. Есть разница между Top и margin-top.

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


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

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


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


Мэтью Эббот очень хороший ответ.

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

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

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


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

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