Ответ. Блоки выводятся прямоугольниками сверху вниз, занимая всю доступную ширину родителя вместе с границами и всеми своими отступами. Высота блока определяется по содержимому.
Ответ. Блок изымается из потока (располагается выше), сохраняя прежние координаты верхнего левого угла (для языков с написанием справа налево сохраняются координаты правого верхнего угла). Блоки в потоке, занимают освободившееся место. Горизонтальный размер абсолютно позиционированного блока перестаёт подстраиваться под ширину родителя, и устанавливается по содержимому.
Ответ. Строчный элемент превращается в блочный, в остальном его поведение полностью совпадает с поведением абсолютно позиционированного блока.
Ответ.
Абсолютно позиционированный блок можно поместить в любое место, задавая
смещения при помощи свойств:
left
, top
, right
, bottom
.
Смещения
left
, top
, right
и bottom
для абсолютно позиционированного блока отсчитываются от сторон
прямоугольника, проведённого по внешней границе внутреннего отступа
первого позиционированного предка (или HTML
,
если другие позиционированные предки отсутствуют).
Смещения распространяются до внешних краёв внешних отступов смещаемого блока. То есть у блока смещается всё: внешние отступы, рамка, внутренние отступы и содержимое.
Ответ.
Свойства
left
, top
, right
и bottom
могут принимать значения в любых единицах размера, в процентах или
задаваться ключевым словом auto
.
Проценты задаются относительно высоты блока-контейнера для
top
и bottom
и ширины блока-контейнера для
right
и left
.
Блоком-контейнером считается ближайший предок, значение
position
которого отлично от stаtic
, а если
таких предков нет, то элемент HTML
.
Значения auto
для всех смещений, кроме bottom
означают такие величины,
какие были бы у элемента, если бы он находился в потоке. Тот же
эффект возникает, когда смещение не задаётся вовсе.
По умолчанию свойства принимают значение auto
, по
наследству не передаются.
Ответ. Если смещения не заданы, абсолютно позиционированный блок сохраняет координаты верхнего левого угла, которые он имел бы в потоке (для языков с написанием справа налево сохраняются координаты правого верхнего угла).
Если задать только одно смещение (например, left
), второе
(top
) сохранит то значение, которое имелось бы у блока
в потоке.
left
и right
для позиционированного блока?
Как это работает, и во всех ли браузерах это работает?
Ответ. Если задать противоположные смещения, то это повлияет на размеры позиционированного блока — размеры будут подстраиваться под заданные смещения. Пусть, например, задано определение:
#block { position:absolute; left:0; right:0; }
Так как задано нулевое расстояние блока от левого и правого края, он вынужден растягиваться, занимая всю ширину блока-контейнера (вместе с границей и всеми своими отступами).
К сожалению, одновременное указание противоположных смещений не
работает в браузере IE (он выполняет left:0
,
но игнорирует right:0
).