Свойство position | CSS справочник

CSS свойства

Определение и применение

CSS свойство position указывает какой тип позиционирования используется для элемента (статический, относительный, абсолютный или фиксированный).

Совместно со свойством position используются такие CSS свойства как top, right, bottom и left, они позволяют произвести смещение позиционированного элемента относительно определенного края. Ниже в примере рассмотрены возможные типы позиционирования элемента:

  1. position: relative (элемент с относительным позиционированием). При использовании свойства left позиционированный элемент смещается относительно его текущей позиции (отрицательное значение смещает элемент влево, положительное значение вправо). На примере left: 200px;
  2. position: absolute (элемент с абсолютным позиционированием). При использовании свойства left позиционированный элемент смещается относительно левого края его предка (отрицательное значение смещает элемент влево, положительное значение вправо), при этом предок должен иметь значение position отличное от установленного по умолчанию — static, иначе отсчёт будет вестись относительно левого края окна браузера (как при значении position fixed).
    На примере left: 40px.
  3. position: fixed (элемент с фиксированным позиционированием). При использовании свойства left позиционированный элемент смещается относительно левого края окна браузера (отрицательное значение смещает элемент влево, положительное значение вправо). На примере left: 40px.
  4. position: static (элемент со статическим позиционированием — является значением по умолчанию). Значение свойства left не повлияет на позиционирование элемента.

Более подробную информацию о позиционировании элементов вы можете получить в учебнике CSS в статье «Позиционирование элементов в CSS».

Поддержка браузерами

Свойство
Chrome

Firefox

Opera

Safari

IExplorer

Edge
position1.01.04.01.07.012.0

CSS синтаксис:

position:"static | absolute | fixed | relative | initial | inherit" ;

JavaScript синтаксис:

object. style.position = "absolute"

Значения свойства

ЗначениеОписание
absoluteАбсолютное позиционирование. При смещении элемент сдвигается относительно заданного края его предка, при этом предок должен иметь значение position отличное от установленного по умолчанию — static, иначе отсчёт будет вестись относительно, указанного края окна браузера (как при position: fixed).
fixedФиксированное позиционирование. При смещении элемент сдвигается относительно заданного края окна браузера.
staticСтатическое позиционирование. Элементы отображаются в том порядке, как они указаны в потоке HTML документа. Это значение по умолчанию.
relativeОтносительное позиционирование. При смещении элемент сдвигается относительно его текущей позиции.
initialУстанавливает свойство в значение по умолчанию.
inheritУказывает, что значение наследуется от родительского элемента.

Версия CSS

CSS2

Наследуется

Нет.

Анимируемое

Нет.

Пример использования

<!DOCTYPE html>
<html>
<head>
	<title>Пример использования свойства position</title>
<style> 
body {
    background-color:khaki; /* задаём задний фон цвета хаки */
    height:2000px; /* устанавливаем высоту элемента */
}
h2
{ position:static; /* элемент со статическим позиционированием */ } .relative { position:relative; /* элемент с относительным позиционированием */ left : 200px; * задаём смещение элемента влево относительно его текущей позиции */ width 200px; /* задаём ширину блока */ height: 250px; /* задаём высоту блока */ border 5px solid; /* задаём стиль для границ сплошной и ширину 5px */ background-color:orange; /* задаём задний фон оранжевого цвета */ } .absolute { position:absolute; /* элемент с абсолютным позиционированием */ left : 40px; * задаём смещение элемента влево относительно левого края его предка */ width 150px; /* задаём ширину блока */ height: 100px; /* задаём высоту блока */ border 5px solid green; /* задаём стиль для границ сплошной, ширину 5px и цвет зелёный */ }
. fixed
{ position:fixed; /* элемент с фиксированным позиционированием */ left : 40px; * задаём смещение элемента влево относительно левого края окна браузера */ width 150px; /* задаём ширину блока */ height: 100px; /* задаём высоту блока */ border 5px solid red; /* задаём стиль для границ сплошной, ширину 5px и цвет красный */ } </style> </head> <body> <h2>h2{position:static;}</h2> <div class = "relative">div position:relative;</div> <div class = "absolute">div position:absolute;</div> <div class = "fixed">div position:fixed;</div> </body> </html>

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

Пример использования свойства position.CSS свойства

html — Разница между position:sticky и position:fixed?

спросил

Изменено 6 месяцев назад

Просмотрено 92к раз

Документацию было довольно сложно понять, так как я новичок в CSS. Так может ли кто-нибудь объяснить реальную разницу между позиция: фиксированная и позиция: фиксированная ? Я также был бы признателен за пример.

Я просмотрел https://developer.mozilla.org/en-US/docs/Web/CSS/position и несколько других статей, но так и не понял.

  • html
  • css
  • макет
  • позиция
1

position: fixed

всегда фиксирует элемент в некоторой позиции в его прокручиваемом контейнере или области просмотра. Независимо от того, как вы прокручиваете его контейнер, он останется в одном и том же положении и не повлияет на поток других элементов внутри контейнера.

Не вдаваясь в подробности, позиция : фиксированная в основном действует как позиция : относительная до тех пор, пока элемент не будет прокручен за пределы определенного смещения, в этом случае он превращается в позицию : фиксированная , в результате чего элемент «залипает» на свое место вместо того, чтобы прокручиваться из поля зрения.

В конечном итоге он отклеивается, когда его прокручивают обратно в исходное положение. По крайней мере, я так это понимаю в теории.

Причина, по которой я не хочу вдаваться в подробности, заключается в том, что position: sticky совершенно новый, экспериментальный (как показано в документе, на который вы ссылаетесь) и еще не завершен. Даже то, что я сказал выше, вполне может измениться в ближайшем будущем. Вы все равно не сможете использовать позицию : sticky (надеюсь, это изменится в течение следующего года).

Mozilla недавно представила свою реализацию position: sticky здесь. Это очень стоит посмотреть.

5

См. этот не требующий пояснений пример для большей ясности. CODEPEN

Фиксированное положение:

  1. Элемент с фиксированным положением отображается относительно области просмотра или самого окна браузера. Он всегда остается на том же месте, даже если страница прокручивается.

  2. Не влияет на поток других элементов на странице, т.е. не занимает определенного места (точно так же, как position: absolute ).

  3. Если он определен внутри какого-либо другого контейнера (div с относительной/абсолютной позицией или без нее), он все равно позиционируется относительно браузера, а не этого контейнера. (Здесь отличается от

    позиция: абсолютная ).

Sticky Position:

  1. Элемент с фиксированной позицией позиционируется в зависимости от положения прокрутки пользователя. Как упоминал @Boltclock, он в основном действует как position: относительный, пока элемент не прокручивается за пределы определенного смещения, и в этом случае он превращается в position: fixed. Когда он прокручивается назад, он возвращается в свое предыдущее (относительное) положение.

  2. Влияет на поток других элементов на странице, т.е. занимает определенное место на странице (точно так же, как

    позиция: относительная ).

  3. Если он определен внутри какого-либо контейнера, он позиционируется относительно этого контейнера. Если в контейнере есть переполнение (прокрутка), в зависимости от смещения прокрутки он превращается в position:fixed.

Итак, если вы хотите добиться фиксированной функциональности, но внутри контейнера, используйте sticky.

1

Позвольте мне сделать это очень просто.

фиксированный 9Позиция 0012 не будет занимать места в теле, поэтому следующий элемент (например, изображение) будет позади фиксированного элемента.

липкая позиция занимает место, поэтому следующий элемент не будет скрыт за ней.

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

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

Предположим, у вас есть панель навигации в верхней части веб-сайта, и вы хотите, чтобы она была фиксированной, чтобы при прокрутке страницы она всегда была видна.

Если вы дадите ему position: fixed; , то содержимое страницы вверху будет скрыто под панелью навигации. Напротив, если вы решите присвоить ему позицию : липкая; сверху: 0; , панель навигации останется в потоке документа и изящно подтолкнет содержимое под собой ниже, поэтому содержимое не будет скрыто.

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

0

  1. фиксированный фиксируется как по оси X, так и по оси Y, а липкий фиксируется только по оси X.
  2. липкий будет зафиксирован только до конца контейнера, а фиксированный будет зафиксирован до конца веб-страницы.

Fixed и Sticky очень похожи, но между ними есть одно важное различие:

1. position:fixed : Он напрямую фиксирует элемент в указанном месте, используя верх, низ, лево, право.

 <дел>

абзац с фиксированной позицией

- здесь абзац с фиксированной позицией всегда будет зафиксирован вверху: 0 пикселей.

2. position:sticky : Элемент не фиксируется напрямую в указанном месте. Сначала он будет перемещать элемент с помощью прокрутки. Он зафиксирует элемент только в том случае, если элемент достиг указанного местоположения, используя верх, низ, лево, право. Пока он не будет двигаться с прокруткой.

 <дел>

абзац с закрепленной позицией