ГРУППА КУРСА
|
Главная >
Учебник CSS >
Позиционирование блоков в CSSПозиционирование блоков позволяет располагать эти их независимо от расположения других элементов страницы. Позиционирование блоков в CSS осуществляется путём указания координат. Основной поток документаВы уже знаете правила, в соответствии с которыми элементы располагаются на странице. Они идут друг за другом в том порядке, в котором они находятся в коде страницы. Блоковые начинаются с новой строки, а строчные располагаются в строке. Элементы, которые подчиняются этим приавилам, находятся в основном потоке документа. Этот термин возник потому, что существуют элементы, которые размещаются на странице совсем по-другому. Для этого элементу должно быть установлено позиционирование. При этом, он удаляется из основного потока документа. Остальные элементы занимают его место, как будто его вообще нет. Иногда можно встретить информацию, что элементы, которым установлено свойство float, тоже удаляются из основного потока. Но это не совсем правильно, потому что строковые элементы не занимают их место.
Виды позиционированияПри позиционировании блок размещается на странице в соответствии с координатами, которые ему указаны. Блок находится в указанном месте независимо от других элементов, которые могут быть в этом месте. Если там присутствуют элементы, то блок просто накладывается сверху и частично закрывает эти элементы. Это может показаться странным, но на самом деле, в дизайне часто применяется этот эффект. Существуют следующие виды позициционирования блоков: Абсолютное позиционирование. Элемент размещается по указанным координатам. Координаты отсчитываются от границ страницы или от границ внешнего блока, если этот блок тоже имеет позиционирование. Относительное позиционирование. Элемент смещается относительно того места, которое он занимал в основном потоке документа. Другие элементы не занимают его место. Оно остаётся пустым, если его не перекроют позиционированные элементы. Фиксированное позиционирование. Элемент размещается по координатам относительно границ окна браузера. При прокрутке страницы такой элемент не движется вместе со всеми элементами, а остаётся на одном месте в окне браузера. Статическое позиционирование. Это расположение элемента в основном потоке документа. То есть, элемент находится там, где и должен находиться без позиционирования. Если ему заданы координаты, то они игнорируются. Позиционирование устанавливает свойство position. Оно принимает значения: position: absolute; - абсолютное position: relative; - относительное position: fixed; - фиксированное position: static; - статическое Для указания координат используются свойства: left - смещение левого края элемента относительно левой границы окна браузера или внешнего блока. right - смещение правого края элемента относительно правой границы окна браузера или внешнего блока. top - смещение верхнего края элемента относительно верхней границы окна браузера или внешнего блока. bottom - смещение нижнего края элемента относительно нижней границы окна браузера или внешнего блока. Эти свойства могут принимать следующие значения: left: auto; - без смещения (по умолчанию) left: величина в единицах измерения CSS left: величина в процентах. Если элемент смещается относительно окна браузера, то проценты расчитываются от размеров окна браузера. А если елемент смещается относительно внешнего блока, то проценты расчитываются от размеров блока. left: inherit; - значение принимается от родительского элемента У остальных свойств значения указываются так же, как у left. Абсолютное позиционированиеАбсолютное позиционирование в CSS используется для того, чтобы разместить элемент в конкретном месте страницы. Прежде чем размещать позиционированные элементы, создадим страницу и добавим на неё два блока. Они будут находиться в основном потоке документа. Один из них будет с большой высотой. Это нужно для того, чтобы у страницы появилась прокрутка и Вы могли увидеть, как позиционированные элементы ведут себя при прокрутке. Кроме того вы поймёте, как элементы с разными видами позиционирования располагаются относительно основного потока. Для всех блоков на странице установим фон. Стиль: +
HTML код:
Теперь добавим на страницу блок с абсолютным позиционированием. Укажем координаты слева и сверху: Стиль:
HTML код:
Позиционированный элемент наложился на синий блок и частично закрыл его. Обратите внимание - элемент имеет ширину по размеру контента. Это особенность позиционированных блоков. Если блоку не установлена ширина, то он не занимает всю ширину страницы или внешнего блока, как обычные блоки. Позиционированный блок получает ширину по размеру контента с учётом внутренних отступов. Это правило не распространяется на относительное позиционирование. Добавим на страницу ещё один блок с абсолютным позиционированием, но теперь укажем координаты справа и снизу: Стиль:
HTML код:
Попробуйте двигать правый край окна браузера. Блок, который позиционирован по правому краю, будет двигаться, а блок, который позиционирован по левому краю, останется неподвижным. Относительное позиционированиеПри относительном позиционировании элемент смещается относительно своего положения в основном потоке. Его место остаётся незанятым. Чтобы это рассмотреть, расположим позиционированный элемент между блоками, находящимися в основном потоке. В коде страницы он должен быть меджу первыми двумя блоками, которые мы создали. Стиль:
HTML код:
Часто относительное позиционирование в CSS устанавливается без смещения. Блок остаётся на том же месте, где должен быть в основном потоке документа. Но он становится позиционированным. Это делается для того, чтобы позиционировать относительно него другие элементы. Абсолютное позиционирование можно установить относительно другого позиционированного блока. Чтобы рассмотреть этот способ, добавим элемент и поместим его внутрь позиционированного блока. Теперь этот блок будет выглядеть так: HTML код:
Установим новому блоку абслолютное позиционирование. Стиль:
Смещение можно указывать с отрицательноым значением. При этом смещение будет производиться в противоположную сторону. Например нижняя граница элемента будет смещаться не вверх, а вниз. Для примера зададим только что созданному блоку отрицательное смещение. Посмотрите, куда он при этом переместится:
ВАЖНО: По умолчанию, элементы в основном потоке располагаются не возле самого края окна браузера, а с некоторым отступом. Это внутренние отступы тега <body>. У всех браузеров этот отступ разный. Из за этого невозможно точно разместить блок относительно элементов основного потока, потому что координаты элементов в разных браузерах не совпадают. Для решения этой проблемы можно сделать отступы тега <body> нулевыми. Тогда контент страницы сместится к краям, и элементы основного потока будт размещаться одинаково во всех браузерах. Фиксированное позиционированиеФиксированное позиционирование в CSS устанавливается каким-то особым элементам, которые не двигаются при прокрутке страницы и всегда остаются на экране. Координаты указываются так же, как при абсолютном позиционировании. Но они не отсчитываются от внешнего блока, а только от границ окна браузера. Добавим на страницу блок с фиксированным позиционированием. Стиль:
HTML код:
Попробуйте прокрутить страницу, Вы увидите, что фиксированный элемент остаётся на месте. Если указать блоку противоположные координаты, например левую и правую, то это определяет размер блока. Попробуйте создать блок, задать ему любой вид позиционирования и установите ему координаты и слева, и справа. Посмотрите, какие у блока получатся размеры. |