Что означает значение relative у свойства position

Методы позиционирования элементов в CSS

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Базовый поток документа

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

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

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

Элементы со строчным отображением ( display: inline ) выводятся иначе. Они в отличии от блочных элементов не размещаются каждый на новой строке, а следуют друг за другом слево направо. Если пространство справа закончилось, то они переносятся на следующую строку, а не на новую линию как элементы с блочным отображением.

В CSS есть свойства, с помощью которых элементы можно «вырвать» из основного потока документа и задать им другое положение вне базового потока элементов.

CSS-свойство position

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

Свойство position имеет 5 значений:

static — это значение по умолчанию. Оно означает что элемент находится в базовом потоке.

Каждый элемент в потоке занимает определённую область. Но область элемента не всегда сохраняется за ним при его позиционировании.

Статичное позиционирование (static)

Явная установка элементу CSS-свойства position: static может понадобиться только в том случае, когда нужно переопределить другое значение position установленное элементу.

Пример выстраивания статично позиционированных элементов:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Относительное позиционирование (relative)

Например, для того чтобы элемент сдвинуть вверх или вниз относительного его исходного положения к нему нужно применить CSS свойство top или bottom :

Для сдвига элемента вправо или влево используется CSS свойство left или right :

Пример, в котором 2 элементу установим относительное позиционирование и сместим его на 20px вверх и влево относительно его исходного положения:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

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

Этот тип позиционирования позволяет разместить элемент именно там, где вы хотите.

Позиционирование выполняется относительно ближайшего позиционированного предка.

Если данный элемент не был бы позиционированным, то позиционирование #id-3 выполнялось бы относительно #id-1 :

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

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Установить ширину (высоту) абсолютно позиционированному можно с помощью установки ему двух координат top и bottom ( left и right ).

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

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Фиксированное позиционирование (fixed)

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

Фиксированное позиционирование применяется для закрепления на странице навигационных меню, кнопки «вверх», панелей с социальными кнопками и многого другого.

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Совместное использование относительного и абсолютного позиционирования

Относительное позиционирование очень часто используется вместе с абсолютным позиционированием.

Источник

Свойство position

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

position: static

Статическое позиционирование производится по умолчанию, в том случае, если свойство position не указано.

Его можно также явно указать через CSS-свойство:

Здесь и далее, для примеров мы будем использовать следующий документ:

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

Элемент с position: static ещё называют не позиционированным.

position: relative

Относительное позиционирование сдвигает элемент относительно его обычного положения.

Этот стиль сдвинет элемент на 10 пикселей относительно обычной позиции по вертикали:

Координаты

Для сдвига можно использовать координаты:

position: absolute

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

Например, отпозиционируем заголовок в правом-верхнем углу документа:

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

Так как при position:absolute размер блока устанавливается по содержимому, то широкий Заголовок «съёжился» до прямоугольника в углу.

В абсолютно позиционированном элементе можно одновременно задавать противоположные границы.

Браузер растянет такой элемент до границ.

Как растянуть абсолютно позиционированный блок на всю ширину документа?

Первое, что может прийти в голову:

Но это будет работать лишь до тех пор, пока у страницы не появится скроллинг!

Прокрутите вниз ифрейм:

Вы увидите, что голубой фон оканчивается задолго до конца документа.

Дело в том, что в CSS 100% относится к ширине внешнего блока («containing block»). А какой внешний блок имеется в виду здесь, ведь элемент изъят со своего обычного места?

В данном случае им является так называемый (««initial containing block»»), которым является окно, а не документ.

То есть, координаты и ширины вычисляются относительно окна, а не документа.

Может быть, получится так?

С виду логично, но нет, не получится!

Координаты top/right/left/bottom вычисляются относительно окна. Значение bottom: 0 – нижняя граница окна, а не документа, блок растянется до неё. То есть, будет то же самое, что и в предыдущем примере.

position: absolute в позиционированном родителе

Если у элемента есть позиционированный предок, то position: absolute работает относительно него, а не относительно документа.

Используем position для размещения элемента управления:

Часть текста перекрывается. Кнопка более не участвует в потоке.

Используем float для размещения элемента управления:

Браузер освобождает место справа, текст перенесён. Кнопка продолжает находиться в потоке, просто сдвинута.

position: fixed

Это подвид абсолютного позиционирования.

Разница в нескольких словах:

Когда страницу прокручивают, фиксированный элемент остаётся на своём месте и не прокручивается вместе со страницей.

В следующем примере, при прокрутке документа, ссылка #top всегда остаётся на своём месте.

Итого

Виды позиционирования и их особенности.

Визуально переносит элемент на новое место.

Новое место вычисляется по координатам left/top/right/bottom относительно ближайшего позиционированного родителя. Если такого родителя нет, то им считается окно.

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

При прокрутке он остаётся на том же месте.

Почитать

CSS-позиционирование по-настоящему глубоко в спецификации Visual Formatting Model, 9.3 и ниже.

Ещё есть хорошее руководство CSS Positioning in 10 steps, которое охватывает основные типы позиционирования.

Задачи

Модальное окно

В примере ниже DIV’у дополнительно поставлен цвет фона и прозрачность, чтобы было видно перекрытие:

Браузеры: все основные, IE8+. Должно работать при прокрутке окна (проверьте).

Можно, конечно, узнать эту высоту при помощи JavaScript, но CSS даёт более удобный способ. Будем использовать position:fixed :

Свойство z-index должно превосходить все другие элементы управления, чтобы они перекрывались.

Источник

Типичный верстальщик

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Позиционирование элементов: разбор всех значений position в CSS

Всем привет, меня зовут Анна Блок, и эта статья будет посвящена довольно «острой» теме, которая связана с позиционированием элементов. Мы поговорим о таком свойстве как position и его значениях: relative, absolute и fixed. Также мы поговорим о таком значении как static, но по большей степени нас будет интересовать именно первая «троица», так как она чаще всего используется на сайтах.

Если ты постоянно задаешься вопросом, какое значение и в какой ситуации нужно использовать, то эта статья для тебя. Разбор начнём с теории и после на практике отражу примеры на сайте Codepen.

Position

Свойство position устанавливает способ позиционирования элемента относительно окна браузера или других элементов на web-странице. Сейчас на данный момент это свойство поддерживает 5 значений: absolute, fixed, relative, static и sticky.

Relative

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

Absolute

Static

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

Fixed

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

Sticky

Стоит отметить, что свойство position поддерживается браузерами уже довольно давно, но на тот момент поддерживалась только три свойства: static, relative и absolute и уже начиная с IE 7, появилась поддержка fixed. Но при этом относительно новое значение sticky не поддерживается Internet Explorer-ом совсем и относительная поддержка у Edge начинается только с шестнадцатой версии. Во всех остальных браузерах такое свойство, как position поддерживается без проблем.

Практика

Теперь давайте перейдем к практике, и я покажу, как на деле работают эти свойства. В HTML зададим блок под названием box и внутри него установим элемент под названием item.

Для box мы визуально зададим пространство, задав ему ширину и высоту, добавив обводку.

Далее мы стилизуем item. Также установим для него ширину, высоту, цвет фона и скругление уголов блока.

Итак, именно с этим примером мы сейчас будем работать и рассмотрим, как будут вести себя элементы при разных значения position.

Absolute

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Давайте предположим, что нам необходимо разместить круг в том же месте, как это отображено на картинке. Как это сделать? Если вспомнить теорию, то там было сказано, что такое свойство, как position: absolute задает абсолютное позиционирование для элемента, поэтому давайте так и поступим.
Элементу item добавим position: absolute. Однако для того, что бы наш position работал, нам необходимо начать работу в связке с такими свойствами, как: left, top, right и bottom. В зависимости положения объекта, мы будем использовать то или иное свойство. В нашем случае нам нужно разместить его относительно правой и нижней сторон квадрата.

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

И тут мы видим первую проблему, с которой сталкиваются новички — круг вышел за приделы блока box. Вы должны помнить, что если вы в CSS не указали, какой блок является родителем (относительно какого блока должен позиционироваться элемент), то он позиционирует дочерний элемент относительно всего тега body. Решается эта проблема добавлением свойства relative для блока box.

После того, как мы это сделали, наша точка вернулась на необходимое место.

Ознакомиться подробнее с HTML и CSS можно тут:

Fixed
Добавим в блок box текста, что создать автоматический скролл на странице.

Теперь наша задача сделать так, что бы наша точка «преследовала» нас, и все время находилась в одной части экрана, как на картинке.

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

И теперь в момент, когда мы скролим страницу эта точка «идет» за нами, она зафиксировалась в одной части экрана.

Ознакомиться подробнее с HTML и CSS можно тут:

Ознакомиться подробнее с HTML и CSS можно тут:

Sticky
Итак, теперь давайте рассмотрим четвертый пример. В нем мы создадим блок header, внутри которого содержится текст. Рядом создадим блок main, внутри которого размести блок side с текстом, что бы на странице появился скрол и блок sticky с заголовком. Под блоком main разместим еще один блок и назовем его footer с добавлением текста.

Таким образом, у нас получилась чистая разметка HTML. Ее мы и будем стилизовать. Начнем с блока side, установив ему ширину.

Далее стилизуем заголовок, задав ему цвет текста и цвет фона.

Теперь при скроле заголовок цепляется к верху и продолжает «идти» за нами по мере следования по странице.

Ознакомиться подробнее с HTML и CSS можно тут:

Вместо заключения

Не забывай задавать свои вопросы по вёрстке или фронтенд разработке у профессионалов на FrontendHelp в режиме онлайн.

Источник

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

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня мы поговорим о принципах позиционирования Html элементов с помощью CSS правил Position (со значениями absolute, relative и fixed) и свойств, задающих смещение left, right, top и bottom. Видите звездочку в левом нижнем углу? Дочитав статью до конца, вы узнаете как она туда попала.

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

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

Position relative — относительное позиционирование

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

У него имеется четыре возможных значения (static | relative | absolute | fixed). Откуда мы это можем узнать? Ну, конечно же, из спецификации, которая выложена на официальном сайте отца-основателя современной сети интернет Тима Бернерса-Ли:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

По умолчанию используется значение position: static. Т.е. в нормальном потоке два CSS правила, способных его разорвать, имеют значения по умолчанию static и float:none. Как только одно из этих значений изменится — нормальный поток Html кода в этом месте будет нарушен, потому что теперь этот тег может совершенно по-другому взаимодействовать со своими соседями или вообще даже не взаимодействовать.

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

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

По умолчанию для всех четырех используется значение Auto. Когда мы прописываем для какого-либо тега правило position: relative, то значения отступов со всех сторон сбрасываются в ноль и вам предоставляется возможность самим задать их.

Нужно понимать как задаются отступы. Например, left: 400px означает отступ от левой стороны вправо на соответствующую величину, а top: 100px — от верхней стороны вниз. Если укажите отрицательные значения Left, right, top и bottom, то элемент будет двигаться в противоположную сторону (например, top — наверх, а Left — влево).

Давайте рассмотрим использование relative для плавающего элемента. Пусть у нас имеются два Div контейнера, которые мы подкрасим для наглядности разным цветом фона с помощью background.

Первый контейнер мы изначально заставим плавать влево с помощью соответствующего свойства, а т.к. он будет пустой, то мы зададим ему высоту и ширину с помощью width и height (и отступы с помощью margin):

В результате мы получим примерно такую картину маслом:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Первый контейнер, как и ожидалось, плавает влево. При этом сам по себе второй блок этого как бы и не замечает (ибо он блочный — display: block), но зато это замечает строчный элемент текста, который обтекает наш плавающий блок.

Теперь давайте добавим к CSS правилам для первого контейнера position: relative и зададим отступы слева и сверху с помощью Left и top:

В результате мы увидим, что наш плавающий элемент сдвинулся в соответствии с заданными отступами:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Обратите внимание, что текст по-прежнему продолжает его обтекать так, как будто бы он все еще стоит на своем месте. Т.е. многие Html теги при своем построении считают, что он находится на своем законном месте (без учета заданных нами в правилах Left и top сдвигов).

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

Принцип действия relative не сложен, но не совсем понятно для чего это можно будет применить на практике. На самом деле это правило используется в связке с position absolute, и вот в таком виде оно находит очень даже большое применение при верстке сайтов и макетов. Но обо все по порядку.

Position absolute — абсолютное позиционирование в CSS

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

Но сначала посмотрим на эту конструкции еще без добавления «position: absolute». При этом для подчеркивания строчности Span добавим ему высоту, которая все равно не применится, а CSS код на сей раз добавим для разнообразия не через атрибут style=»», а через тег style внутри конструкции Head:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Для Div мы еще и отступ слева задали в 100px. Ну, а теперь посмотрим, что же изменится, если мы зададим нашему строчному тэгу Span абсолютное позиционирование путем добавления CSS правила position absolute:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Произошло странное. Судя по тому, что к Span применилось свойство height:100px — он перестал быть строчным тегом. Потом у нас, очевидно, состыковались друг с другом фрагменты «первое» и «третье», как будто бы элемента со словом «второе» между ними уже не существует. Именно так и работает абсолютное позиционирование в CSS.

Но давайте разберем все по пунктам при задании элементу свойства «position: absolute»:

Также как и для плавающих элементов (с прописанных Float), в случае применения к тегу «position: absolute», эффект Margin-colloapse для таких тэгов проявляться не будет. Т.е. ему никто не сможет передать свои вертикальные отступы и он никому передать их не сможет тоже (ни с кем не делится вертикальными отступами).

Если вы вспомните предыдущую статью из рубрики «Справочника CSS», то увидите, что все эти три пункта наблюдались и при создании плавающих элементов с помощью Float.

Поэтому, если для какого-либо тега уже было задано Float, но затем для него же прописали «position: absolute», то первое браузером (именно он отвечает за разбор кода) сбрасывается в None (значение по умолчанию), ибо нет смысла реализовывать две одинаковых модели.

Это все хорошо, но ведь с помощью «absolute» мы должны осуществлять абсолютное позиционирование. Ну, собственно, это так и есть на самом деле. В купе с ним мы можем использовать все те же четыре CSS правила: Left, right, top и bottom. Как они будут работать при абсолютном позиционировании?

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

А само понятие контейнера для абсолютно спозиционированных элементов будет отличаться от общепринятого. Из предыдущих статей вы, наверное, помните, что контейнером для тега Html является область просмотра, а для всех остальных — область контента родителя. У тэга с прописанным position absolute это будет не так.

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

Допустим, если мы задали только абсолютное позиционирование, но не прописали никаких значений для правил Left, right, top и bottom, то для них будет использоваться умолчательное значение Auto и такой элемент останется стоять на своем месте (как и у нас на последнем скриншоте). Тут должно быть все понятно.

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

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

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

В итоге абсолютно спозиционированный тег прижался к нулевой точке отсчета области просмотра. Но мы вольны сами выбирать контейнер для элемента с прописанным position absolute. Как же это можно сделать?

Связка position absolute и relative в Div верстке

Ну, а почему бы для этого не использовать CSS правило «position: relative». Пропишем его в нужном теге предка (который станет в итоге контейнером для абсолютно спозиционированного элемента), а значения Left, right, top или bottom прописывать не будет, тем самым, фактически, вообще не внеся никаких изменений в положение данного предка (он останется в нормальном потоке), но назначив его контейнером и началом отчета для нашего абсолютного позиционирования.

Если мы пропишем «relative» для тега Body, то наша картинка чуть-чуть изменится:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Видите, появились характерные отступы говорящие о том, что теперь за точку отсчета берется левый верхний угол тэга Body. Помните, что в умолчательных значениях для этого тега прописаны отступы margin в 8 пикселей, которые мы и наблюдаем:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

А теперь давайте в дополнение к уже проделанному пропишем «position: relative» и для контейнера Div, внутри которого и живет тег Span:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

Как видим, картина поменялась. Несмотря на то, что relative прописано и для Body, и для Div, контейнером для абсолютно спозиционированного Span стал именно Div, т.к. он является первым предком, у которого значение position отлично от static.

Причем, если мы пропишем для нашего Div еще и border с padding, а также margin, то увидим, что в качестве контейнера при абсолютном позиционировании будет использоваться область контента с имеющимися внутренними отступами:

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

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

Отступы (смещение) Left, right, top и bottom можно задавать не только в абсолютных единицах (читайте про размеры в CSS), но и в процентах, которые будут браться от ширины (left и right) и высоты (top и bottom) полученного контейнера. Т.е. «top:100%» будет соответствовать 100% высоты контейнера, а «left:100%» — 100% от его ширины.

И именно описанное выше взаимодействие я имел в виду, говоря про связку position absolute и relative. У нас благодаря этому появляется возможность самим выбирать контейнер или же, другими словами, точку отсчета при абсолютном позиционировании. Для чего же на практике используют эту связку?

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

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

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

Position fixed — привязка к области просмотра

Последним способом позиционирования является «position: fixed». Рассмотренные ранее способы были рассчитаны на размещение относительно каких-либо элементов Html кода. Но если мы начинаем прокручивать страницу, то и ее теги (даже имеющие абсолютное или относительное позиционирование) перемещаются вверх (или вниз).

А вот при использовании fixed такого уже происходить не будет. Спозиционирванный таким образом элемент всегда будет находиться в одном и том же положении в области просмотра, вне зависимости от прокрутки веб страницы. Вы, наверное, такие варианты уже встречали на сайтах. Например, на подобном эффекте построена работа довольно популярного плагина для WordPress под названием Simple Counters.

Для тэга с прописанным position:fixed контейнер никто не ищет, ибо им является сама область просмотра. Именно в этом заключается отличие от «absolute», а все остальное у них совпадает. Блоки с фиксированным размещением при прокрутке страницы ведут себя так, как будто это элементы интерфейса окна вашего браузера (они всегда под рукой).

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

Что означает значение relative у свойства position. Смотреть фото Что означает значение relative у свойства position. Смотреть картинку Что означает значение relative у свойства position. Картинка про Что означает значение relative у свойства position. Фото Что означает значение relative у свойства position

На сегодня все, в следующей статье мы поговорим уже про CSS правило z-index, которое применимо только к уже спозиционированным элементам кода, т.е. для которых прописаны либо fixed, либо relative, либо absolute.

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Комментарии и отзывы (25)

Тема очень заезженная. Суть поста можно было с лёгкостью отразить в статье в 2 раз короче. Очень много воды.

Великолепное подробное разъяснение материала, мне очень помогло, большое спасибо автору.

Привет, подскажи пожалуйста, как можно справиться с этой ситуацией?

Подробно, понятно, наглядно и полезно.

Спасибо большое, внесли ясность, а то верстал вслепую практически, на интуиции.

спасибо автору за статью, очень пригодилась! теперь я легко смог найти внешние скрытые ссылки на моем сайте которых не было в index.php, они были зашифрованы в стиле css и сдвинуты посредством абсолютного позиционирования, так что их не было видно) Огромное спасибо!

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

Доброй ночи!Огромное Вам СПАСИБО!Всё просто и понятно, без всяких заморочек.Обязательно порекомендую своим знакомым.Удачи Вам и всего Хорошего!

А как сделать, чтобы отступ сверху и слева. шел не от границы браузера, а от границы материала.

я использую Джумла 2.5

Как сделать что бы фиксирование блока прекратилось на определенной высоте от низа страницы

Сергей, java script

Автор! Спасибо Вам за статью! Благодаря Вам поправил свой сайт без труда, хотя вообще ничего не смыслю в написании тегов. Огромное спасибо за Ваш труд! А всех, кто пишет гадости про Ваши статьи, я презираю!

материал сами писали или взяли откуда-то? только честно. мне-то, конечно, все равно. но неприятно, когда кто-то у кого списывает и выдает за свое.

Черт знает сколько времени не мог побороть данные элементы. Кучу статей подобных прочитал, но не мог текст заставить стоять там, где мне нужно. Сложности были в размещении времени работы в шапке сайта mosk-stroy точка ru

Спасибо! Качественный материал, понятное разъяснение.

CSS позволяет определить точное положения HTML-элементов.

С помощью CSS программист может размещать содержимое двумя способами:

1. абсолютное позиционирование позволяет указывать положение содержимого по отношению окна браузера.

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

Определяет используемый метод позиционирования.

static — обычный элемент, использующий установленную по умолчанию HTML-структуру (по умолчанию).

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

absolute — позиционирование элемента определяется смещением по отношению к положению содержащего его элемента, и они не влияют на общую структуру.

fixed — позиционирование элемента является смещением, как и в случае со значением absolute, но сам элемент фиксируется в окне браузера и при прокрутке окна не перемещается.

inherit — принимается значение родительского элемента.

top, right, bottom, left

Определяет величину смещения от определенного края (соответственно верхнего, правого, нижнего и левого).

auto — величина смещения выбирается браузером так, чтобы можно было разместить все элементы (по умолчанию).

любая соответствующая стандарту длина — число, представляющее величину смещения от края.

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

inherit — принимается значение родительского элемента.

Определяет порядок расположения элементов в стеке (slacking order).

auto — элемент располагается на том же месте, что и его родительский элемент (по умолчанию).

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

inherit — принимается значение родительского элемента.

Очень подробная и понятная статья. Но у меня при верстке сайта что-то пошло не так. Абсолютно спозиционированный ребенок в качестве отсчета берет координаты родительского блока БЕЗ padding. Свойства родителя

Padding родителя в 10 пикселей не видит.

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

Мой предыдущий вопрос снят. Разобрался.

Перестань лить воду. Говори короче и по делу!!

Невозможно читать эту размозню.

Краткость сестра таланта.

Не надо только надо думать о том что бы продвигать свой ресурс.

Спасибо, очень помогли разобраться.

Скажите, как отключить адаптивное меню? Оно постоянно разворачивается, когда я листаю страницу наверх и загораживает поиск

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

Спасибо большое, статья очень помогла разобраться!

Источник

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

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