Position свойство css – Position (absolute, relative и fixed) — способы позиционирования Html элементов в CSS (правила left, right, top и bottom)

Позиционирование элементов. Свойство position — учебник CSS

Позиционирование в CSS — это мощный набор инструментов, с помощью которых можно перемещать элементы веб-страницы и определять их положение относительно браузерного окна и других объектов. Кроме этого, позиционированные элементы могут накладываться друг на друга, словно слои, и порядком этих слоев также можно управлять.

На этом уроке мы наконец познакомим вас с основным инструментом позиционирования, о котором уже неоднократно упоминали в учебнике. Речь пойдет о CSS-свойстве position.

CSS position

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

  • absolute — данное значение задает абсолютное позиционирование элемента. Что это значит? Во-первых, абсолютно позиционированный элемент полностью отделяется от общего потока HTML-документа. Другие элементы страницы будут вести себя так, будто абсолютно позиционированного элемента не существует. Во-вторых, абсолютно позиционированный элемент можно перемещать относительно его родителя (по умолчанию это окно браузера) при помощи свойств

    top, right, bottom и left (о них мы расскажем уже в следующем уроке).

  • relative — относительное позиционирование элемента. В данном случае элемент, как обычно, размещается относительно своего текущего положения в потоке документа, то есть визуальных изменений не видно. Но затем, пользуясь свойствами top, right, bottom и left, можно двигать относительно позиционированный элемент в нужном направлении (начальной точкой отсчета будет исходное положение элемента). Это чем-то похоже на функцию translate() свойства transform.

  • fixed — фиксированное позиционирование элемента. По принципу работы это похоже на абсолютное позиционирование, однако разница в том, что в отличие от абсолютно позиционированного элемента, фиксированный элемент остается на месте при прокрутке веб-страницы (аналогичным образом себя ведет фиксированное фоновое изображение).

  • sticky — это микс относительного и фиксированного позиционирования. Элемент позиционируется относительно до тех пор, пока не пересекает определенный порог, после чего элемент становится фиксированным в рамках ближайшего родителя. По состоянию на 2017 год не очень хорошо поддерживается браузерами. Необходимо использование вендорного префикса -webkit-.

  • static (значение по умолчанию) — статическое позиционирование. Такой элемент ведет себя как обычно. На практике данное значение может применяться, например, для перезаписи другого значения. Свойства top, right, bottom и left не влияют на элемент со статическим позиционированием.

Еще одна особенность абсолютно позиционированного элемента заключается в том, что если его родителем является элемент с относительным, фиксированным либо абсолютным позиционированием, то при перемещении абсолютно позиционированного элемента свойствами top, right, bottom и left точка отсчета будет вестись от данного родительского элемента. В противном случае абсолютно позиционированный элемент ведет свой отсчет от окна браузера. Таким образом можно привязать абсолютно позиционированный элемент к родительскому контейнеру и контролировать пределы, за которые он выходит.


Далее в учебнике: свойства top, left, bottom и right для перемещения позиционированных элементов.

seodon.ru | CSS справочник — position

Опубликовано: 18.08.2010 Последняя правка: 10.12.2015

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

Тип свойства

Назначение: позиционирование.

Применяется: ко всем элементам.

Наследуется: нет.

Значения

Значением свойства CSS position является одно из ключевых слов задающих способ позиционирования.

  • static — обычное расположение элемента на странице, с учетом его типа (блочный, встроенный и т.д.) и элементов окружающих его.
  • relative — относительное позиционирование. Сначала браузер устанавливает элемент, как при обычном расположении, а потом смещает его относительно данного места. При этом остальные HTML-элементы ведут себя так, будто элемент никуда не перемещался, то есть место, где он находился до смещения, остается незанятым, а на новом месте они его «не видят».
  • absolute — абсолютное позиционирование. Позиционирование элемента происходит относительно его ближайшего предка, у которого значение свойства position не равно static (то есть position присутствует сразу у двух элементов). Если же такого предка нет, то элемент позиционируется относительно окна браузера. При этом окружающие HTML-элементы ведут себя так, будто абсолютно позиционируемого элемента вообще нет на странице, то есть форматирование происходит без его участия.
  • fixed — тоже абсолютное позиционирование. Почти такое же, как и absolute, только здесь элемент вообще не может позиционироваться относительно какого-либо элемента‑предка, а только относительно окна браузера, поэтому свойство position используется только для самого элемента. Вдобавок при прокрутке (скроллинге) элемент не меняет своего местоположения в окне.
  • inherit — наследует значение свойства CSS position от родительского элемента.

Как вы знаете, обычным втроенным (inline) элементам нельзя явно задать высоту (CSS width) или ширину (CSS height). Однако, если к встроенному элементу применяется позиционирование со значением absolute или fixed, то размеры у него становятся изменяемые. Помните об этой особенности, часто она очень помогает.

Процентная запись: не существует.

Значение по умолчанию: static.

HTML-элементы называются предками для тех тегов, которые находятся внутри них на любом уровне вложенности, а родительскими для тех, которые находятся внутри них на первом уровне. Естественно предки являются одновременно и родительскими элементами для своих потомков первого уровня вложенности (дочерних).

Естественно при позиционировании вовсе не обязательно использовать свойства CSS top, right, bottom или left, чтобы изменить положение элемента. Да, при относительном позиционировании это не даст особого эффекта — элемент будет вырван из прямого потока, но его место все-равно никто не сможет занять. А вот при абсолютном, элемент будет не только «вырван» из контекста HTML-страницы, но и нижестоящие элементы займут его место. Причем при position: fixed он еще и будет оставаться на одном месте при скроллинге.

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

Обычное расположение элементов

Относительное позиционированиеАбсолютное позиционирование

Синтаксис

position: static | relative | absolute | fixed | inherit

Пример CSS: использование position

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>seodon.ru - CSS свойство position</title>
  <style type="text/css">
   .div1 {
    width: 100%; /* ширина блока DIV1 */
    height: 4000px; /* его высота */
    background: red; /* красный фон */
   }
   .div2 {
    width: 200px; /* ширина блока DIV2 */
    color: white; /* цвет текста */
    background: green; /* зеленый фон */
    position: fixed; /* фиксированная позиция */
    top: 50px; /* смещение вниз от верхней стороны окна */
    left: 100px; /* смещение вправо от левой стороны окна */
   }
   .div3 {
    width: 200px; /* ширина блока DIV3 */
    background: yellow; /* желтый фон */
    position: fixed; /* фиксированная позиция */
    top: 20500px; /* смещение вниз от верхней стороны окна */
   }
   .div4 {
    width: 200px; /* ширина блока DIV4 */
    color: white; /* цвет текста */
    background: blue; /* синий фон */
   }
  </style>
 </head>
 <body>
  <div>
    <div>
     Этот блок DIV2 абсолютно позиционирован относительно
     окна браузера и будет зафиксирован при скроллинге.
    </div>
    <div>
     Этот DIV3 тоже зафиксирован, но вы его вообще
     не увидите, так как задано очень большое смещение
     и он будет всегда находиться в 20500px от верха окна.
    </div>
    <div>
     Обычный блок DIV4.
    </div> 
  </div>
 </body>
</html>

Результат примера

Версии CSS

Версия:CSS 1CSS 2CSS 2.1CSS 3
Поддержка:НетДаДаДа

Браузеры

Браузер:Internet ExplorerGoogle ChromeMozilla FirefoxOperaSafari
Версия:6.0 и 7.08.0 и выше2.0 и выше2.0 и выше9.2 и выше3.1 и выше
Поддержка:ЧастичноДаДаДаДаДа

Internet Explorer 6.0 и 7.0 не понимают значение inherit, IE 6.0 еще не понимает и fixed.

CSS Position: примеры

Верстальщики-новички нередко испытывают трудности с позиционированием элементов через CSS. На самом деле свойство CSS Position куда проще в освоении, чем кажется на первый взгляд. Овладев им, вы получите мощный инструмент, с помощью которого можно расположить все элементы страницы в нужных местах. Но чтобы добиться результата, нужно знать обо всех существующих значениях, поскольку принципы их действия сильно различаются

Специфика построения потока документа

Position CSS работает с потоком веб-страницы. Как это понять? По умолчанию все элементы страницы располагаются в том порядке, в котором вы создали их в html-разметке. Если тег header расположен над тегом footer, то и на странице он будет отображаться выше. И наоборот, если вы почему-то решите разместить footer в html над «хедером», «подвал» страницы будет отображаться над «шапкой». При этом блочные элементы занимают всю доступную для них ширину. Строчные, в свою очередь, располагаются в одну строку, пока не займут ее всю, а потом начнут переноситься на новую. Этот порядок именуется «потоком документа».

css position

Для изменения поведения потока используется свойство Position в CSS. Также он может меняться из-за свойства float, но его мы рассматривать не будем. С помощью позиционирования можно заставить элемент «выпасть» из обычного потока, после чего он начнет вести себя по-новому. Как именно – зависит от использованного значения свойства.

CSS Position: static

Position: static, или статическое позиционирование, является значением по умолчанию для всех блоков html, которые вы создали. В обычных условиях вам не придется иметь с ним дело. Если для какого-нибудь блока или строки не задано вообще никакого позиционирования, значит, оно имеет значение static. На странице такой компонент отображается в соответствии с потоком. Если указать ему свойства right/left или top/bottom, никакого эффекта не будет.

CSS Position: fixed

При использовании этого свойства элемент оказывается вне нормального потока документа. Теперь его положение вычисляется относительно окна браузера, независимо от того, как размещаются прочие компоненты. Другими словами, блок с Position: fixed отправится в верхнюю часть страницы, прижмется к краю окна браузера, а прочие элементы займут его место в соответствии с потоком.

position css

Главная особенность фиксировано позиционированных элементов в том, что они могут перекрывать другие блоки и строки страницы. При скроллинге блок с Position: fixed будет будто бы оставаться на месте, не исчезая с экрана. Это полезно, если вам нужно сделать навигацию или аналогичный элемент, к которому пользователь всегда должен иметь доступ. Фиксированное позиционирование также применяется, если нужно разместить кнопку быстрого скроллинга в определенную часть страницы.

CSS Position: relative

Использование этого свойства называется относительным позиционированием. Если задать элементу свойство Position: relative, тот останется на своем месте. На первый взгляд, ничего особенного не произойдет, но все измениться, если дополнительно использовать свойства right/left и top/bottom. С их помощью можно управлять перемещением компонента относительно его местоположения. На том месте, где блок или строка были раньше, окажется пустое пространство – другие элементы останутся на своих положениях, не обращая внимания на освободившееся место.

css position absolute по центру

При перемещении компонент никак не влияет на положение окружающих частей страницы. Они так и останутся на своих местах, хотя относительно позиционированный блок может их перекрыть. Само по себе свойство используется редко. Обычно его применяют в сочетании со следующим вариантом.

Абсолютное позиционирование

Один из самых интересных и наиболее часто используемых вариантов. При использовании свойства Position со значением absolute положение компонента страницы будет высчитываться относительно окна браузера. Прочие элементы (не являющиеся абсолютно позиционированными) словно «забудут» о существовании «собрата» с Position: absolute и займут его место в потоке. Казалось бы, все точно так же, как в случае с Position: fixed, но есть и серьезные различия.

position css примеры

Во-первых, положением элемента можно свободно управлять – для этого используются свойства top/right/bottom/left. Например, если вы зададите значение bottom: 100px, блок «оттолкнется» от нижней част страницы на 100 пикселей. Во-вторых, при скроллинге «абсолютный» компонент останется на своем месте, вместо того, чтобы перемещаться со страницей.

Взаимодействие абсолютных блоков с родительскими элементами

Можно добиться еще более точного контроля над абсолютно позиционированным компонентом. Для этого нужно задать его родителю свойство Position: fixed, relative или absolute.

Рассмотрим пример. У вас есть div с классом relative-div, внутри которого размещается div с классом absolute-div. Задаем внутреннему блоку свойство Position: absolute. Тот сразу же «вылетает» из потока и оказывается где-то вверху, ведь теперь его расположение просчитывается относительно окна браузера. Теперь задаем блоку с классом relative-div свойство Position: relative и «блудный сын» возвращается на место. Почти. На самом деле, он оказывается в верхнем левом углу родительского элемента.

свойство position в css

Почему так происходит? Дело в специфике свойства Position: absolute. По умолчанию его положение зависит от окна браузера, но если «родитель» тоже позиционирован как-то кроме static, позиция начинает зависеть от родительского элемента. Это очень удобно, потому что можно разместить компонент в любом месте, не просчитывая огромные цифры относительно окна браузера. Прием часто используется для размещения иконок, кнопок и других небольших элементов.

Position CSS по центру

Одна из главных трудностей новичков состоит в том, чтобы центрировать элемент вертикально и горизонтально. Грамотно используя свойство Position, сделать это проще простого. CSS Position: absolute по центру устанавливается следующим образом. Допустим, у вас есть div с классом absolute-div, который находится в «диве» с классом relative-div. «Родитель» позиционирован относительно и его ширина равна ширине всей страницы. «Потомок» имеет ширину и высоту 400 px, абсолютное позиционирование и по умолчанию располагается в верхнем левом углу родительского элемента.

position css по центру

Все, что нужно сделать – это задать абсолютному компоненту top: 50 % и left: 50 %. Почти готово! Absolute-div сдвинулся с места и оказался почти в центре, но не совсем. Середины «родителя» касаются его края, а нам нужно, чтобы в центре блока оказался центр «потомка». Для этого нужно задать ему margin-left и margin-right со значениями -200 px. Тем самым мы сместим абсолютно позиционированный блок на половину его высоты и ширины. Все, он в центре!

Перекрывание компонентов

Проблемой может стать непростое, на первый взгляд, «наложение» позиционированных элементов на их «соседей». Например, компонент с Position: fixed будет перекрывать все, что расположено на странице. Исправить ситуацию можно с помощью свойства z-index, однако помните, что оно работает только для позиционированных элементов. Соответственно, если вы хотите размещать блок поверх фиксировано позиционированного элемента, этому блоку придется также задать позиционирование. Например, относительное.

Лучший способ освоить позиционирование – рассматривать примеры Position CSS, экспериментировать и пробовать что-то свое. Постарайтесь научиться использовать его в сочетании с функцией calc() – это даст возможность более гибко настраивать расположение. Однако помните, что это свойство не предназначено для выстраивания всей «сетки» страницы. С его помощью нужно перемещать относительно небольшие элементы, иначе можно слишком легко запутаться.

CSS: Свойство position | Заметки разработчика

Свойство position распространяется на все элементы и может иметь одно из пяти возможных значений:
  • static
  • relative
  • absolute
  • fixed
  • inherit

position:static

Из раздела 9 Модель визуального форматирования:
Данный блок является обычным блоком, позиционируемым в соответствии с нормальным потоком. Свойства ‘top’, ‘right’, ‘bottom’ и ‘left’ не применяются.
На что следует обратить внимание в этом примере:
  • Второй блок отображается там же, где бы он отображался без определения position
  • Значения задаваемые для top не используются, поскольку для блоков с ‘static’ значение всех смещений всегда ‘auto’
Что следует помнить:
  • Если свойство элемента position имеет значение static, то элементу нельзя указать его расположение.
  • Так как static это значение по умолчанию, то нет необходимости указывать это значение, если только оно не переопределяет другое значение позиционирования блока.

position:relative

Из раздела 9 Модель визуального форматирования:
Положение блока рассчитывается в соответствии с нормальным потоком (это называется позиционированием в нормальном потоке). Затем блок смещается относительно своего нормального положения. Когда для расположения блока используется модель относительного позиционирования, то положение следующего рассчитывается так, как будто первый блок не был смещён относительно своего нормального положения.
На что следует обратить внимание в этом примере:
  • Блок ‘два’ смещён ниже на 300 пикселей, но блок ‘три’ и его содержимое остались на месте. Выглядит как будто содержимое блок ‘два’ съехало со страницы, оставив свой след. Это выглядит так, потому что ‘relative’ (относительное) позиционирование не нарушает нормальный поток.
  • Блок с относительным позиционированием накладывается на следующие элементы и отображается перед другими блоками.
Что следует помнить:
  • Вычисленные значения всегда left = -right и top = -bottom. Если контейнер блока имеет значение direction равное ltr, то используется значение ‘left’, а ‘right’ = -left. Если direction контейнера блока имеет значение равное rtl, то используется значение ‘right’, а ‘left’ игнорируется.
  • В отличии от ‘absolute’ (абсолютной) модели, свойства top, right, bottom и left ни могут растянуть или сжать блок, они не могут влиять на его размер.

position:absolute

Из раздела 9 Модель визуального форматирования:
Положение блока (можно и размер) указываются с помощью свойств ‘top’, ‘right’, ‘bottom’, и ‘left’. Они указывают смещение относительно содержащего блока. Абсолютно позиционируемые блоки изымаются из нормального потока и не влияют на размещение следующих элементов потока. Следует заметить, что поля блоков с абсолютным позиционированием не перекрываются ни какими другими полями.
На что следует обратить внимание в этом примере:
  • В связи с тем, что смещение не указано, блок ‘два’ не перемещён относительно своей нормальной позиции, но если бы мы использовали, например: top:0;left:0; блок находился бы в левом верхнем углу окна просмотра.
  • Макет отображается так, как если бы блоку ‘два’ присвоили стиль: display:none. Блок был удалён из потока.
  • С блоком ‘два’ удалённым из поток, блок ‘три’ переместился вслед за блоком ‘один’ (параграфы последовали за ним).
  • Как и все элементы удалённые из потока, блок ‘два’ был сжат по горизонтали.
Что следует помнить:
  • Для любого элемента с позиционированием ‘absolute’ или ‘fixed’ вычисляемое значение display:block.
  • ‘Содержащий блок’ это блок который определяет позиционирование контекста. Оно устанавливается ближайшим предком с ‘position’ установленной в ‘absolute’, ‘relative’ или ‘fixed’. Это означает, что родительский блок может и не быть содержащим блоком.
  • Положение по умолчанию, абсолютно позиционируемого блока, не всегда бывает в стиле top:0;left:0; (в LTR контексте), на это есть две причины:
  1. В содержащем блоке позиционирование блока определяется позиционированием ближайшего предка, если такового нет, то указанный контейнер является корневым элементом. Содержащий блок в котором расположен корневой элемент это прямоугольная область называемая начальным содержащим блоком. Для устройств без разбивки страниц он имеет размер области просмотра(окна или другой области просмотра на экране) и он прикреплён к странице. В этом примере показан блок позиционируемый относительно видимой области (по умолчанию, содержащий блок).
  2. Элемент позиционируемый относительно отступов блока, а не содержимого блока и не бордюра содержащего блока. Этот новый пример демонстрирует где находился бы блок ‘два’ если бы границы отступа блока не касались границы содержимого блока (содержащий блок — элемент body).
  • Размер окна может быть определён значениями свойств: top, right, bottom и left. Например обнуление этих свойств сделает блок растянутым по размеру видимой области. Обнуление всех смещений блока (Примечание: в IE6 блок не растянется)
  • Для создания маски наложения, которая не прокручивается вместе с документом (как в предыдущем примере) можно использовать либо fixed фиксированное позиционирование вместо absolute абсолютного, либо установить стиль body в position:relative как начального блока позиционирования области просмотра (стиль элемента html не работает в IE). Пример наложения.
  • position:absolute запускает haslayout.
  • Самое главное, что следует помнить:
    • Использование этой схемы позиционирования является плохой практикой, так как она удаляет блоки из потока.

    position:fixed

    Из раздела 9 Модель визуального форматирования»:
    Фиксированное позиционирование является под категорией абсолютного позиционирования. Разница в том, что при фиксированном положении блока, содержащий блок определяется областью просмотра. Для устройств без разбивки фиксированные блоки не перемещаются при прокрутке документа. В этом отношении они похожи на фиксированные фоновые изображения. Для устройств с постраничной разбивкой блоки с фиксированным положением повторяются на каждой странице. Это удобно для размещения подписей внизу каждой страницы. Блоки, которые больше чем область страницы обрезаются. Части блока с фиксированным позиционированием, которые не видны в начальном содержащем блоке, не будут напечатаны.
    На что следует обратить внимание в примере:
    • В связи с тем, что фиксированное позиционирование является под категорией абсолютного позиционирования, то всё, что было верно для ‘absolute’, так же верно и для ‘fixed’ (элемент сжимается по горизонтали, удаляется из потока и т.д.)
    • Блок позиционируется относительно видимой области и не прокручивается вместе со страницей.
    • В IE6, блок отображается как ‘static’ блок, но есть «забавный» обходной путь для этого.
    • При печати документа, блок ‘два’ отобразится на каждой странице.
    Что следует помнить:
    • Положение блока рассчитывается в соответствии с ‘absolute’ моделью, но кроме этого блок фиксируется относительно некоторой ссылки. В случае использования следующих медиа типов: handled, projection, screen, tty и tv блок фиксируется относительно видимой области и не перемещается при прокрутке.
    • Содержание блока может быть не доступным для просмотра пользователями, если оно находится за пределами видимой области.
    • В случае использования медиа типа ‘print’, авторы могут не хотеть что бы элемент отображался на каждой странице. Тогда лучше использовать следующие правили для @media:
    @media print {
      #logo {position: static;}
    }
    
  • Как и position:absolute, position:fixed запускает haslayout в EI.
  • position:inherit

    Если для блока указан position:inherit, то он будет принимать такие же вычисленные значения свойств как и его родительский блок.
    Обратите внимание, что IE6 и IE7 не поддерживают это значение, кроме тех случаев когда используется direction и visibility (см CSS: Значение свойства: inherit)

    Что следует помнить:

    Смещение блока
    Помните, что при абсолютном и фиксированном позиционировании блоков, значения установленные в процентах для top, right, bottom и left вычисляются в соответствии с размерами содержащего блока (который может быть не родительским блоком)
    ‘position’ и ‘overflow’
    Блок со стилем overflow:hidden будет обрезать элементы с относительным позиционированием (вложенные блоки), но никогда не будет скрывать блоки с абсолютным позиционированием. Это связано с тем, что родительский блок не всегда является содержащим блоком (ближайшего предка с ‘position’ установленной в ‘absolute’, ‘relative’ и ‘fixed’).
    Это означает, что элементы с абсолютным позиционирование отобразятся вне блока со стилем overflow:hidden если этот блок не является содержащим блоком или внутренним элементом указанного блока. Данный пример показывает как это работает.
    Поля
    Авторы могут использовать поля элементов вне зависимости от схемы их позиционирования.
    В случае с IE
    В IE позиционирование блока может быть благословением или проклятием:
    • В IE6, position:relative (с haslayout) могут быть использованы отрицательные поля для предотвращения обрезания блока родительским контейнером (пример демонстрирующий решение этой проблемы).
    • Позиционированный элемент может «мешать» расположению блоков в IE6 и 7 и может создавать наложение содержимого (пример)
    Порядок наложения и уровень наложения
    • В соответствии с последовательностью исходного кода, позиционированные блоки могут выплывать перед блоками расположенными в нормальном потоке.
    • Авторы могут указывать уровень наложения через свойство ‘z-index’, только на позиционированные блоки.
    • В IE6 и 7, просто факт позиционирования может вызывать наложение контента (пример см. выше).
    Аналогия с призраками DrLangbhani:
    Элемент с относительной позицией всегда смещён относительно своего нормального положения в потоке. Другими словами, он смещён относительно того места где был бы при нормальных обстоятельствах и его смещение не влияет на положение элементов расположенных вокруг него. Это как призрак, который покинул своё тело. Тело, которое имеет ширину, высоту и оказывает влияние на окружение, но невидимо. Призрачные блоки в могут перемещаться, но всё ещё связаны со своим телом и его позиция по прежнему измеряется от него. Теперь элемент с абсолютным позиционированием, с ним ещё проще. Он больше не влияет на своё окружение (он вырван из потока). Он как настоящий призрак без тела. Что касается, родственных элементов, то он их больше не беспокоит, как если бы его не существовало. Что бы узнать свое положение он просматривает каждого предка пока не найдёт элемент с position:relative [position:fixed] или position:absoluter. Этот элемент будет служить точкой отсчёта. Если он не найдёт элемент с позиционированием, то будет ориентироваться относительно документа.

    CSS свойство position: sticky

    Вы здесь: Главная — CSS — CSS3 — CSS свойство position: sticky

    CSS свойство position: sticky

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

    Пример Sticky Position

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

    // схематичная HTML разметка
    <div>
        Sticky Position #1
    </div>
    <div>
        <h4>
            Несколько сгенерированных абзацев для демонстрации свойства position: sticky.
        </h4>
        <p>
            рыба-текст
        </p>
    </div>

    // базовые CSS свойства
    body {
        color: #000;
        font-family: sans-serif;
        font-size: 16px;
    }

    .sticky-first {
        position: sticky;
        top: 0;
        left: 0;
        background-color: #9b59b6;
        color: #fff;
        padding: 10px;
    }

    .sticky-second {
        position: sticky;
        top: 0;
        left: 0;
        background-color: #040d21;
        color: #fff;
        padding: 10px;
    }


    В чем разница между свойствами sticky и fixed?

    Элемент с позицией fixed, не следует за прокруткой, а всегда остается наверху страницы. Чаще всего на практике fixed применяется для фиксирования меню в верхней части окна браузера.

    Пример Fixed Position

    // схематичная HTML разметка
    <div>
        Fixed Position
    </div>
    <div>
        <h4>
            Несколько сгенерированных абзацев для демонстрации свойства position: fixed.
        </h4>
        <p>рыба-текст</p>
    </div>

    // базовые CSS свойства
    .fixed {
        position: fixed;
        top: 0
        left: 0;
    }

    Итоги

    Прежде чем использовать свойство position: sticky, не поленитесь проверить его поддержку браузерами на текущий момент по caniuse.com. На момент написания статьи, безопаснее использовать свойство position: fixed для фиксирования элемента в нужном месте страницы. Однако следует помнить, что свойство fixed не позволит поочередно фиксировать несколько блоков. Он фиксирует только один блок, в отличии от sticky.

    Начинающие разработчики часто жалуются, что они достаточно хорошо умею верстать и понимают базовые принципы программирования, но не могут самостоятельно написать не одной строчки кода на JavaScript. Чтобы не отвечать каждому лично, я специально написал статью «5 советов для начинающих разработчиков». Если вам по прежнему трудно справиться с программированием, тогда проще делегировать эту область разработки другим людям. Создать собственную веб-студию стало невероятно просто, когда расписан каждый шаг в моем видеокурсе.

    • CSS свойство position: sticky Создано 13.01.2020 10:30:57
    • CSS свойство position: sticky Михаил Русаков
    Предыдущая статья Следующая статья

    Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

      Она выглядит вот так: Как создать свой сайт

    2. Текстовая ссылка:
      <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

      Она выглядит вот так: Как создать свой сайт

    3. BB-код ссылки для форумов (например, можете поставить её в подписи):
      [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *