CSS предлагает четыре типа позиционирования.
position:absolute; ). Такое позиционирование позволяет определять расположение элемента, задавая позиции left, right, top или bottom в любых единицах измерения CSS. Кроме того, абсолютно размещенные элементы полностью изъяты из потока страницы, определенного HTML-кодом: остальные элементы на странице размещаются без учёта position:relative; ). Элемент с таким позиционированием размещается относительно его текущего положения в потоке HTML. Так, например, устанавливая значение top равным 20 пикселов и значение left равным 200 пикселов для относительно размещенного заголовка, вы переместите его на 20 пикселов вниз и 200 пикселов влево от того места, где он появился бы на странице. В отличие от абсолютного позиционирования, здесь остальные элементы страницы регулируют старое HTML-размещение position:fixed; ). Фиксированный элемент закрепляется в определенном месте на экране. Определение такого позиционирования играет ту же роль, что и установка значения fixed для свойства background-attachment при позиционировании фоновых изображений. Когда посетитель прокручивает страницу, фиксированные элементы остаются на экране как абзацы и заголовки, в то время как фотографии прокручиваются вместе со страницей. Использование фиксированных элементов — отличный способ создать неподвижное боковое меню или воспроизвести эффект HTML-фреймов, где только определенная часть страницы прокручивается.В отсутствие каких-либо дополнительных указаний (в виде правил CSS или атрибутов HTML) браузер размещает содержимое на странице по следующим правилам:
body.body {
background-image: url(Pos_divs_body.png);
}
div {
color: Blue;
border: solid 1px blue;
margin: 2px;
padding: 4px;
font-size: large;
}
div div {
color: Red;
border: solid 1px red;
}
...
<div>
Это текст в контейнере div - Lorem ipsum...
<div>
Это текст в контейнере div - Lorem ipsum... </div>
Это текст в контейнере div - Lorem ipsum...
</div>
(рис 6.1) Нормальный поток
div (например, width:40%; ) и убедитесь, что появившееся пространство остаётся незаполненным.Очевидно, что, если документ состоит из набора контейнеров, то в рамках нормального потока можно как угодно управлять их взаимным положением по вертикали и смещением по горизонтали относительно границ окна - пользуясь свойствами margin и width.
Однако в нормальном потоке невозможно разместить два (и более) смежных по горизонтали блока: любой блочный элемент всегда занимает всю ширину своего контейнера. Невозможно дать браузеру команду: "Элемент X следует разместить справа (слева) от элемента Y", не прибегая к использованию других механизмов.
Принципиально другой механизм заключается в полном извлечении (выбрасывании) элемента из потока и размещении его в указанной позиции - относительно контейнера.
<style type="text/css">
body {
padding: 0;
margin: 0;
}
div {
border: solid 1px blue;
padding: 4px;
}
.static {
color: Blue;
padding: 2em;
}
.abs {
position: absolute;
top: 0px; right: 0px;
color: Red;
border: solid 1px red;
}
</style>
...
<div class="static">
Это текст в обычном (статически позиционированном) контейнере div - Lorem ipsum...
<div class="abs">
Этот контейнер div позиционирован абсолютно вправо (top: 0px; right: 0px;) - Lorem ipsum dolor sit amet
</div>
</div>
(рис 6.2) Абсолютно позиционированный блок в правом верхнем углу
<style type="text/css">
body {
padding: 0;
margin: 0;
}
div {
border: solid 2px blue;
padding: 4px;
}
.static {
position: absolute;
color: Blue;
padding: 2em;
}
.abs {
position: absolute;
bottom: 0px;
right: 0px;
color: Red;
border: solid 2px red;
}
...
<div class="static">
Это текст в <b>абсолютно позиционированном</b> контейнере div - Lorem ipsum...
<div class="abs">
Этот контейнер div позиционирован абсолютно вправо и вниз (bottom: 0px; right: 0px;)
- Lorem ipsum dolor sit amet
</div>
</div>
(рис 6.3) Абсолютно позиционированный блок в абсолютно позиционированном блоке
Очевидно, абсолютное позиционирование даёт полную свободу поместить любой элемент в любую точку - достаточно знать её координаты, выраженные в какой-либо из единиц измерения CSS. Однако часто координаты заранее неизвестны (они могут зависеть, например, от высоты текстового блока). В этом случае средства абсолютного позиционирования недостаточно. Нет способа выразить, например, такую команду: "Элемент X следует поместить слева (справа, сверху, снизу) от элемента Y".
Не существует такого вида позиционирования как "плавающий", и "плавающие" элементы должны быть позиционированы статически (что автоматически достигается при отсутствии определения свойства position ). Однако свойство float позволяет модифицировать нормальный поток ещё одним способом. "Плавающий" (floating) элемент примыкает к левой ( float:left ) либо правой ( float:right ) границе своего контейнера, а последующие элементы (как блочные, так и строчные) обтекают его с противоположной стороны. Это нашло чрезвычайно широкое применение в CSS-вёрстке (об этом говорится в отдельной лекции).
div {
width: 40%;
float: left;
margin: 3px;
padding:3px;
border:solid 1px blue;
color:Blue;
}
...
<div>
Это плавающий контейнер div - Lorem ipsum... </div>
<div>
Это плавающий контейнер div - Lorem ipsum ...</div>
(рис 6.4) Плавающий блочный элемент и обтекающий его блочный элемент
.floating {
float: right;
width: 40%;
margin-right: 3px;
padding: 3px;
border: solid 1px blue;
color: Blue;
}
...
<div>
<div class="floating">
Это плавающий контейнер div - Lorem ipsum...
</div>
Это текст, обтекающий плавающий контейнер - Lorem ipsum ...
</div>
(рис 6.5) Плавающий блочный элемент и обтекающий его слева текст
Если задать блочному элементу значение auto в свойствах margin-left и margin-right, то он центрируется по горизонтали в своём контейнере. При этом у элемента должна быть задана ширина. Для старых браузеров (IE5-) этот приём не срабатывает, и тогда применяются менее изящные способы. Чтобы центрировать строчный элемент (например, img), его обычно помещают в блочный (либо назначают ему свойство display:block, тем самым делая блочным его самого).
Для вертикального центрирования применяют другую технологию: позиционируют блочный элемент абсолютно левым верхним углом в центр экрана ( top:50%; left:50%; ) и затем смещают влево и вверх путём задания отрицательных отступов.
div {
margin-left: auto;
margin-right: auto;
width: 300px;
background: #ccc;
}
...
<div>
Если задать блочному элементу значение auto в свойствах margin-left и
margin-right, то он центрируется по горизонтали в своём контейнере...
</div>
(рис 6.6) Горизонтальное центрирование разметки
img {
width:747px;
height:500px;
position:absolute;
top:50%;
left:50%;
margin-top:-250px;
margin-left:-373px;
}
...
<div>
<img src="Cypripedium M.jpg" alt="Cypripedium macranthos Sw" />
</div>
(рис 6.7) Вертикальное центрирование
Один из эффективных приёмов позиционирования состоит в том, чтобы размещать маленькие объекты относительно других объектов на странице, например, блок внутри блока. Для этого блок-контейнер позиционируют относительно (при этом он остаётся на месте и не выбивается из нормального потока), а внутренний блок - абсолютно. Точнее, абсолютная позиция отсчитывается от первого блока в ряду контейнеров, который имеет позиционирование absolute, relative или fixed (но не static ). Если такого контейнера нет, то им считается окно. Пример 6.8 показывает размещение span в правом нижнем углу его контейнера div.
div {
width: 70%;
border: 4px dotted gray;
padding: 4px;
padding-bottom: 30px;
position: relative;
margin: 10px auto;
}
div span {
position: absolute;
bottom: 0;
right: 0;
background: #ddd;
padding: 2px;
margin: 2px;
}
...
<div>
<span>Внутренний блок 1</span> Один из эффективных приёмов позиционирования
состоит в том, чтобы размещать маленькие объекты относительно других объектов
на странице, например, блок внутри блока. Для этого блок-контейнер позиционируют
относительно (при этом он остаётся на месте и не выбивается из нормального
потока), а внутренний блок - абсолютно.
</div>
<div>
<span>Внутренний блок 2</span> Данный пример показывает размещение абсолютно
позиционированных элементов span в правых нижних углах их контейнеров.
Внутренние блоки позиционированы посредством задания свойств bottom: 0;
right: 0;
</div>
(рис 6.8) Применение относительного позиционирования
span в правый верхний угол секции. Подберите для секции подходящее значение отступа.Таким образом, все основные задачи позиционирования можно решить, только пользуясь всеми тремя описанными подходами:
Часто бывает нужно, чтобы некоторые элементы страницы были постоянно видимыми, например, навигационная панель, поле для поиска или логотип сайта, а, как известно, большинство веб-страниц длиннее высоты экрана. Используя значение fixed свойства position, вы можете зафиксировать некоторые элементы в определенных местах, разрешая при этом пользователям прокручивать содержимое очень длинной веб-страницы. Фиксированное позиционирование работает во многом подобно абсолютному — вы точно так же можете использовать свойства top, bottom, left или right для размещения элемента. Как и абсолютное, фиксированное позиционирование удаляет элемент из потока HTML. Он "плавает" над другими частями страницы, которые просто игнорируют его. Фиксированное позиционирование не работает в Internet Explorer версий 6 и ниже.
div {
margin-left: 210px;
}
.fixed {
position: fixed;
left: 10px;
top: 100px;
list-style-position: inside;
margin: 10px;
border: 1px solid black;
background: #ccc;
padding: 3px;
width: 170px;
}
...
<ul class="fixed">
<li>Это список,</li>
<li>позиционированный фиксированно</li>
<li>в точке (10px; 100px)</li>
</ul>
<div>
<p>
Это длинный блок текста, и для его полного просмотра нужно прокручивать
страницу вниз. Фиксированно позиционированный список при этом остаётся
на месте.
</p>
...
</div>
(рис 6.9) Применение фиксированного позиционирования
В нормальном потоке элементы не накладываются друг на друга, а при остальных способах позиционирования это очень легко может произойти. Какой же всё-таки элемент должен оказаться сверху - можно указать при помощи общего свойства z-index, принимающего произвольное целое неотрицательное значение.
img {
position: absolute;
width: 50%;
}
img:hover {
z-index: 1000;
}
...
<img src="Crataegus.jpg" alt="Crataegus" title="Crataegus" />
<img style="top: 10%; right: 0" src="Cypripedium C.jpg" alt="Cypripedium C" title="Cypripedium calceolus" />
<img style="top: 40%; right: 30%;" src="Cypripedium M.jpg" alt="Cypripedium M" title="Cypripedium macranthos Sw" />
(рис 6.10) Наложение элементов
z-index.position в relative.CSS предлагает четыре типа позиционирования.
position:absolute; ). Такое позиционирование позволяет определять расположение элемента, задавая позиции left, right, top или bottom в любых единицах измерения CSS. Кроме того, абсолютно размещенные элементы полностью изъяты из потока страницы, определенного HTML-кодом: остальные элементы на странице размещаются без учёта position:relative; ). Элемент с таким позиционированием размещается относительно его текущего положения в потоке HTML. Так, например, устанавливая значение top равным 20 пикселов и значение left равным 200 пикселов для относительно размещенного заголовка, вы переместите его на 20 пикселов вниз и 200 пикселов влево от того места, где он появился бы на странице. В отличие от абсолютного позиционирования, здесь остальные элементы страницы регулируют старое HTML-размещение position:fixed; ). Фиксированный элемент закрепляется в определенном месте на экране. Определение такого позиционирования играет ту же роль, что и установка значения fixed для свойства background-attachment при позиционировании фоновых изображений. Когда посетитель прокручивает страницу, фиксированные элементы остаются на экране как абзацы и заголовки, в то время как фотографии прокручиваются вместе со страницей. Использование фиксированных элементов — отличный способ создать неподвижное боковое меню или воспроизвести эффект HTML-фреймов, где только определенная часть страницы прокручивается.В отсутствие каких-либо дополнительных указаний (в виде правил CSS или атрибутов HTML) браузер размещает содержимое на странице по следующим правилам:
body.body {
background-image: url(Pos_divs_body.png);
}
div {
color: Blue;
border: solid 1px blue;
margin: 2px;
padding: 4px;
font-size: large;
}
div div {
color: Red;
border: solid 1px red;
}
...
<div>
Это текст в контейнере div - Lorem ipsum...
<div>
Это текст в контейнере div - Lorem ipsum... </div>
Это текст в контейнере div - Lorem ipsum...
</div>
(рис 6.1) Нормальный поток
div (например, width:40%; ) и убедитесь, что появившееся пространство остаётся незаполненным.Очевидно, что, если документ состоит из набора контейнеров, то в рамках нормального потока можно как угодно управлять их взаимным положением по вертикали и смещением по горизонтали относительно границ окна - пользуясь свойствами margin и width.
Однако в нормальном потоке невозможно разместить два (и более) смежных по горизонтали блока: любой блочный элемент всегда занимает всю ширину своего контейнера. Невозможно дать браузеру команду: "Элемент X следует разместить справа (слева) от элемента Y", не прибегая к использованию других механизмов.
Принципиально другой механизм заключается в полном извлечении (выбрасывании) элемента из потока и размещении его в указанной позиции - относительно контейнера.
<style type="text/css">
body {
padding: 0;
margin: 0;
}
div {
border: solid 1px blue;
padding: 4px;
}
.static {
color: Blue;
padding: 2em;
}
.abs {
position: absolute;
top: 0px; right: 0px;
color: Red;
border: solid 1px red;
}
</style>
...
<div class="static">
Это текст в обычном (статически позиционированном) контейнере div - Lorem ipsum...
<div class="abs">
Этот контейнер div позиционирован абсолютно вправо (top: 0px; right: 0px;) - Lorem ipsum dolor sit amet
</div>
</div>
(рис 6.2) Абсолютно позиционированный блок в правом верхнем углу
<style type="text/css">
body {
padding: 0;
margin: 0;
}
div {
border: solid 2px blue;
padding: 4px;
}
.static {
position: absolute;
color: Blue;
padding: 2em;
}
.abs {
position: absolute;
bottom: 0px;
right: 0px;
color: Red;
border: solid 2px red;
}
...
<div class="static">
Это текст в <b>абсолютно позиционированном</b> контейнере div - Lorem ipsum...
<div class="abs">
Этот контейнер div позиционирован абсолютно вправо и вниз (bottom: 0px; right: 0px;)
- Lorem ipsum dolor sit amet
</div>
</div>
(рис 6.3) Абсолютно позиционированный блок в абсолютно позиционированном блоке
Очевидно, абсолютное позиционирование даёт полную свободу поместить любой элемент в любую точку - достаточно знать её координаты, выраженные в какой-либо из единиц измерения CSS. Однако часто координаты заранее неизвестны (они могут зависеть, например, от высоты текстового блока). В этом случае средства абсолютного позиционирования недостаточно. Нет способа выразить, например, такую команду: "Элемент X следует поместить слева (справа, сверху, снизу) от элемента Y".
Не существует такого вида позиционирования как "плавающий", и "плавающие" элементы должны быть позиционированы статически (что автоматически достигается при отсутствии определения свойства position ). Однако свойство float позволяет модифицировать нормальный поток ещё одним способом. "Плавающий" (floating) элемент примыкает к левой ( float:left ) либо правой ( float:right ) границе своего контейнера, а последующие элементы (как блочные, так и строчные) обтекают его с противоположной стороны. Это нашло чрезвычайно широкое применение в CSS-вёрстке (об этом говорится в отдельной лекции).
div {
width: 40%;
float: left;
margin: 3px;
padding:3px;
border:solid 1px blue;
color:Blue;
}
...
<div>
Это плавающий контейнер div - Lorem ipsum... </div>
<div>
Это плавающий контейнер div - Lorem ipsum ...</div>
(рис 6.4) Плавающий блочный элемент и обтекающий его блочный элемент
.floating {
float: right;
width: 40%;
margin-right: 3px;
padding: 3px;
border: solid 1px blue;
color: Blue;
}
...
<div>
<div class="floating">
Это плавающий контейнер div - Lorem ipsum...
</div>
Это текст, обтекающий плавающий контейнер - Lorem ipsum ...
</div>
(рис 6.5) Плавающий блочный элемент и обтекающий его слева текст
Если задать блочному элементу значение auto в свойствах margin-left и margin-right, то он центрируется по горизонтали в своём контейнере. При этом у элемента должна быть задана ширина. Для старых браузеров (IE5-) этот приём не срабатывает, и тогда применяются менее изящные способы. Чтобы центрировать строчный элемент (например, img), его обычно помещают в блочный (либо назначают ему свойство display:block, тем самым делая блочным его самого).
Для вертикального центрирования применяют другую технологию: позиционируют блочный элемент абсолютно левым верхним углом в центр экрана ( top:50%; left:50%; ) и затем смещают влево и вверх путём задания отрицательных отступов.
div {
margin-left: auto;
margin-right: auto;
width: 300px;
background: #ccc;
}
...
<div>
Если задать блочному элементу значение auto в свойствах margin-left и
margin-right, то он центрируется по горизонтали в своём контейнере...
</div>
(рис 6.6) Горизонтальное центрирование разметки
img {
width:747px;
height:500px;
position:absolute;
top:50%;
left:50%;
margin-top:-250px;
margin-left:-373px;
}
...
<div>
<img src="Cypripedium M.jpg" alt="Cypripedium macranthos Sw" />
</div>
(рис 6.7) Вертикальное центрирование
Один из эффективных приёмов позиционирования состоит в том, чтобы размещать маленькие объекты относительно других объектов на странице, например, блок внутри блока. Для этого блок-контейнер позиционируют относительно (при этом он остаётся на месте и не выбивается из нормального потока), а внутренний блок - абсолютно. Точнее, абсолютная позиция отсчитывается от первого блока в ряду контейнеров, который имеет позиционирование absolute, relative или fixed (но не static ). Если такого контейнера нет, то им считается окно. Пример 6.8 показывает размещение span в правом нижнем углу его контейнера div.
div {
width: 70%;
border: 4px dotted gray;
padding: 4px;
padding-bottom: 30px;
position: relative;
margin: 10px auto;
}
div span {
position: absolute;
bottom: 0;
right: 0;
background: #ddd;
padding: 2px;
margin: 2px;
}
...
<div>
<span>Внутренний блок 1</span> Один из эффективных приёмов позиционирования
состоит в том, чтобы размещать маленькие объекты относительно других объектов
на странице, например, блок внутри блока. Для этого блок-контейнер позиционируют
относительно (при этом он остаётся на месте и не выбивается из нормального
потока), а внутренний блок - абсолютно.
</div>
<div>
<span>Внутренний блок 2</span> Данный пример показывает размещение абсолютно
позиционированных элементов span в правых нижних углах их контейнеров.
Внутренние блоки позиционированы посредством задания свойств bottom: 0;
right: 0;
</div>
(рис 6.8) Применение относительного позиционирования
span в правый верхний угол секции. Подберите для секции подходящее значение отступа.Таким образом, все основные задачи позиционирования можно решить, только пользуясь всеми тремя описанными подходами:
Часто бывает нужно, чтобы некоторые элементы страницы были постоянно видимыми, например, навигационная панель, поле для поиска или логотип сайта, а, как известно, большинство веб-страниц длиннее высоты экрана. Используя значение fixed свойства position, вы можете зафиксировать некоторые элементы в определенных местах, разрешая при этом пользователям прокручивать содержимое очень длинной веб-страницы. Фиксированное позиционирование работает во многом подобно абсолютному — вы точно так же можете использовать свойства top, bottom, left или right для размещения элемента. Как и абсолютное, фиксированное позиционирование удаляет элемент из потока HTML. Он "плавает" над другими частями страницы, которые просто игнорируют его. Фиксированное позиционирование не работает в Internet Explorer версий 6 и ниже.
div {
margin-left: 210px;
}
.fixed {
position: fixed;
left: 10px;
top: 100px;
list-style-position: inside;
margin: 10px;
border: 1px solid black;
background: #ccc;
padding: 3px;
width: 170px;
}
...
<ul class="fixed">
<li>Это список,</li>
<li>позиционированный фиксированно</li>
<li>в точке (10px; 100px)</li>
</ul>
<div>
<p>
Это длинный блок текста, и для его полного просмотра нужно прокручивать
страницу вниз. Фиксированно позиционированный список при этом остаётся
на месте.
</p>
...
</div>
(рис 6.9) Применение фиксированного позиционирования
В нормальном потоке элементы не накладываются друг на друга, а при остальных способах позиционирования это очень легко может произойти. Какой же всё-таки элемент должен оказаться сверху - можно указать при помощи общего свойства z-index, принимающего произвольное целое неотрицательное значение.
img {
position: absolute;
width: 50%;
}
img:hover {
z-index: 1000;
}
...
<img src="Crataegus.jpg" alt="Crataegus" title="Crataegus" />
<img style="top: 10%; right: 0" src="Cypripedium C.jpg" alt="Cypripedium C" title="Cypripedium calceolus" />
<img style="top: 40%; right: 30%;" src="Cypripedium M.jpg" alt="Cypripedium M" title="Cypripedium macranthos Sw" />
(рис 6.10) Наложение элементов
z-index.position в relative.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.