Я знаю, что эти свойства CSS используются для позиционирования элемента на странице.
Однако когда следует использовать каждый из них?
Я знаю, что эти свойства CSS используются для позиционирования элемента на странице.
Однако когда следует использовать каждый из них?
Свойство
position
используется для позиционирования элемента на странице. Однако, в зависимости от того, какое свойство мы используем, элемент будет использовать ту или иную ссылку для позиционирования себя относительно него.Возможные значения, которые может принимать свойство
position
:static | relative | absolute | fixed | inherit | initial
. Поясню, из чего состоит каждый из них:положение: статическое
Это значение, которое элемент принимает по умолчанию для позиционирования самого себя. С этим значением элемент будет соответствовать нормальному потоку страницы, то есть он будет расположен на своем месте и будет игнорировать значения свойств
top
,left
,right
иbottom
.Обратите внимание, что я присвоил идентификатор второму элементу div и назвал его
movido
. Я пытаюсь применить свойствоleft
безрезультатно.должность: родственник
С помощью этого значения мы можем позиционировать элемент относительно нормального потока страницы. Можно сказать, что мы позиционируем элемент, взяв за основу нормальный поток (положение по умолчанию) указанного элемента.
Мы можем использовать
top
,left
иright
дляbottom
позиционирования нашего элемента, используя в качестве ссылки положение элемента по умолчанию. В этом случае я собираюсь применить свойствоleft: 100px
из предыдущего примера, и divmovido
будет смещен на 100 пикселей вправо от его положения по умолчанию.положение: абсолютное
Это значение также будет принимать значения
top
,left
иright
.bottom
Элемент сposition: absolute
не будет находиться в пределах обычного потока страницы и будет принимать в качестве ссылки окно браузера или ближайший позиционированный элемент (который имеет любое значениеposition
кроме ), если он является родителем элемента, который мы хотим расположить.static
Вот пример каждого:
Пример использования окна браузера в качестве эталона
В этом случае я возьму окно браузера в качестве эталона и сдвину div на
movido
40 пикселей вниз и на 50 пикселей вправо по отношению к нему.Вы можете видеть, что div
movido
, не находящийся в пределах обычного потока страницы, не влияет на нормальный поток остальных элементов, и поэтому два других элемента расположены вместе (без учета пространства, оставленного divmovido
в предыдущем ). пример , в котором он находится в обычном потоке страницы).Пример использования в качестве ссылки родительского элемента с
position:relative
ближайшимВ этом случае я использовал тот же CSS для элемента div с идентификатором
movido
, что и в предыдущем примере, чтобы показать, что в этом случае элемент divmovido
ссылается на родительский элемент,position: relative
а не на окно браузера (40 пикселей вниз и 50 пикселей вверх). справа от родительского элемента).положение: фиксированное
Элементы, расположенные с помощью
position: fixed
, также находятся за пределами обычного потока страницы. Однако его не следует путать с элементами, расположенными с помощьюposition: absolute
.В отличие от последнего, элементы с
position: fixed
берут окно браузера в качестве ссылки и не учитывают позиционирование родительского контейнера. Кроме того, при прокрутке страницы элемент, который позиционируется какposition: fixed
, останется в той же позиции относительно окна браузера, даже если прокрутка переместила страницу вниз.Поскольку картинка стоит тысячи слов, взяв за основу последний пример раздела
position: absolute
:Как видите, элемент div
movido
позиционируетсяposition: fixed
относительно окна браузера независимо от того, содержится ли он в элементе withposition: relative
или прокручивается ли страница.должность: присущая
Собственно свойство
position
со значениемinherit
действует так же, как и остальные свойства, которые могут получить это значение, оно наследует значение для этого свойства от родительского элемента.позиция: начало
Как и в случае с предыдущим значением, оно действует так же, как и остальные свойства, которые могут получить это значение, в этом случае заставляя свойство
position
принимать значение по умолчанию, поэтому использованиеposition: initial
, будет таким же, как указаниеposition: static
.положение: липкое
Это относительно новое значение для этого свойства.
Используя это значение, элемент действует так, как если бы он был позиционирован со значением
relative
, пока не будет достигнуто пороговое значение смещения (в самом элементе или в родительском элементе), после чего элемент становится позиционированным, как если бы он был позиционирован со значениемfixed
.Например, мы возьмем за эталон горизонтальное меню, которое находится вверху страницы под логотипом компании, к которой мы относимся.
Что-то такое:
А мы хотим, чтобы при прокрутке и меню уже не помещалось на экране (то есть значение свойства
top
меньше 0), меню оставалось фиксированным вверху экрана.Что-то такое:
Для этого мы будем использовать значение
sticky
, так как оно сделает всю работу за нас без необходимости использованияJavascript
.Использование будет таким:
В этом примере вы можете прокручивать вверх и вниз, чтобы увидеть, что div
menu
зависает, когда достигаетtop: 0
.Однако — и это главная причина, по которой я не указал его в начале ответа в качестве значения свойства
position
— он еще не полностью поддерживается всеми браузерами.Посмотреть браузеры, поддерживающие это свойство , можно здесь .
БОНУС: типичные примеры.
Вот несколько типичных примеров позиционирования (центрирования).
1.- Центрировать div по горизонтали на странице (с помощью
position: relative
)2.- Отцентрируйте div по горизонтали на странице (с помощью
position: absolute
)3.- Центрировать div по горизонтали на странице (со
position: static
значением по умолчанию)4.- Центрировать div по горизонтали внутри другого div
5.- Центрировать div по горизонтали и вертикали на странице
6.- Центрировать div по вертикали и горизонтали внутри другого div
Я думаю, что этот вопрос-статья нуждается в резюме:
Статический: значение по умолчанию. Элемент учитывает свое положение относительно родительского элемента и его братьев и сестер, что определяет порядок, в котором он отображается на экране.
Относительный: освобождает элемент от его исходного положения и в сочетании с верхним, нижним, левым и правым позволяет нам перемещать его относительно него. Положение остальных элементов не изменяется.
Абсолютный: То же, что и относительный, но атрибуты top, bottom, left и right будут позиционировать его относительно первого родительского элемента со значением позиции, отличным от статического или начального, или, если нет, элемента HTML. Освобожденное пространство становится занятым остальными одноуровневыми элементами.
Фиксированный: Идентичен абсолютному, за исключением того, что элемент всегда позиционируется относительно :root, поэтому на него не влияет никакая прокрутка, даже прокрутка документа.
Наследовать: наследует значение прямого родителя.
Исходное: возвращает начальное значение, которое в данном случае является статическим.