Расположение элементов поверх других на странице. Позиционирование содержимого. Абсолютное и фиксированное позиционирование

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

  • left - для задания расстояния в пикселах от левого края окна (х-координата);
  • top - для задания расстояния в пикселах от верхнего края окна (у-координата);
  • z-index - для указания порядка, в котором элементы будут перекрывать друг друга; это новое измерение, элементы с большим z-индексом будут появляться над элементами с меньшим z-индексом.

Конечно, при использовании этих трех свойств не создается эффект трехмерного пространства, но это уже нечто большее, чем плоская поверхность. В этом случае говорят о 2,5-мерном пространстве.
Кроме свойств-координат, нам понадобится свойство роsition , которое в сочетании со свойствами left и top позволяет устанавливать элементы в определенные позиции окна. Свойство position может принимать три значения:

  • absolute - заданные свойства left и top поставят элемент в точку с координатами х и у относительно верхнего левого угла контейнера (объекта, содержащего данный элемент). Если они определены для элемента вне контейнера, то началом отсчета координат будет верхний левый угол страницы. Заметим, что положение элемента не зависит от положения его тега внутри HTML-документа;
  • relative - элемент будет установлен в соответствии с тем, в каком месте исходного текста он находится; это значение установлено по умолчанию. Например, если элемент находится в трех строках от начала его выделения в тексте документа, то по умолчанию считается, что свойство позиционирования имеет значение relative , а свойства координат left и top - нулевые значения. Ненулевые значения свойств left и top задают сдвиг элемента относительно исходного положения;
  • static - элемент будет поставлен в некоторое положение относительно фона и не будет перемещаться при прокручивании страницы.

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


<НЕАD>Позиционирование





nepBbiu позиционированный текст




Рис. 666. Использование свойства i-index позволяет изменить естественный порядок следования элементов в тексте HTML-документа

При позиционировании элементов может оказаться, что размеры элемента превосходят размеры фрагмента (отводимой области, заданной в нашем примере тегом

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

  • nоnе (ничего) - если элемент и выйдет за пределы фрагмента (отведенного для него места), он все равно будет показан;
  • clip - выступающие за границы фрагмента части элемента будут обрезаны;
  • scroll - будет использована прокрутка.

В следующем примере используется свойство overflow для создания механизма прокрутки первого текста.


<НЕАD><ТIТLЕ>Позиционирование




riepBbiM позиционированный текст

Второй позиционированный текст

Рис. 667. Механизм прокрутки текста, реализованный с помощью свойства overflow

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

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

Рис. 668. Пример создания трехмерного текста с помощью CSS


3d эффект</ТITLE> <НЕАD><br> <STYLE><br> P (font-family: "sans-serif"; font-size: 96, -color: red)<br> P. highlight (color: silver }<br> P. shadow (color: darkred}<br> </STYLE> <br> <BODY BGCOLOR="#509090"><br> <DIV STYLE= "position: absolute; top: 5; left: 5;<br> width: 600; height: 100; margin: top:10"><br> <P CLASS=Shadow>Объемный текст"</Р><br> <DIV<br> STYLE="position: absolute; top: 0;left:0; width: 600; <br> height:100;margin: top: 10"> <P CLASS=highlight>Oбъeмный текст</Р><br> <DIV STYLE="position: absolute; top: 2; left: 2; width: 600;<br> height:100;margin: top: 10"><br> <P>Объемный текст </Р><br> </DIV> <br> </BODY> <br> </HTML> </i></p><p>Обратите внимание, что этот способ создания эффектных заголовков значительно экономнее, чем использование <a href="/skachat-graficheskie-faily-besplatnye-vektornye-redaktory.html">графических файлов</a> с аналогичным содержанием.</p><table width="635" border="0"><tr><td width="200"> </td><td> </td><td width="200"> </td> </tr></table> <p>Часто на практике приходится решать задачу группирования и выравнивания контента <a href="/text-overflow-v-firefox-i-vse-vse-vse-troetochie-v-konce-stroki.html">средствами CSS</a>. Сегодня мы рассмотрим основные способы размещения элементов в горизонтальный ряд. </p> <p>Материал данной статьи призван помочь начинающим веб-дизайнерам в освоении приемов верстки web-страниц.</p> <h3>Из чего выбрать или методы</h3> <p>Существует несколько способов расположения структурных элементов в ряд в горизонтальной плоскости. Наиболее полезными, с точки зрения практического применения, являются:</p> <ul><li>метод «Float»</li> <li>метод «Inline-block»</li> <li>метод «Table-cell»</li> </ul><p>Каждый из них имеет свои преимущества, области применения и недостатки. Рассмотрим их по порядку.</p> <h3>«Для рывка» или немного теории</h3> <p>Все структурные <a href="/html-elementy-odinochnye-i-parnye-tegi-otkryvayushchii-i-zakryvayushchii-teg-ponyatie-tega-html-kakim-term.html">элементы HTML</a> можно условно разделить на:</p> <p><b>Инлайновые </b> (встроенные) – типа <i>img, span </i> и им подобные. У нас нет возможности менять их фон и задавать им произвольные линейные размеры.</p> <p><b>Блочные </b> – занимающие всю ширину родительского блока, всегда начинаются с <a href="/1s-funkcii-raboty-so-strokami-novye-funkcii-raboty-so.html">новой строки</a> – <i>p, h, div </i>.</p> <p>Наглядный пример встроенных и блочных структур приведен ниже:</p> <h3>Метод «Float»</h3> <p>Как уже известно (см. выше), блочный элемент размещается с новой строки вне зависимости от заданной ему ширины (<i>width </i>). По этому, уменьшая горизонтальный размер <i>div </i>-а, в рядок блочки не построить.</p> <p>Наиболее популярный (особенно среди начинающих верстальщиков), метод решения это использование свойства <i>float </i>.</p> <p>CSS свойство <i>float </i> обрело большую популярность и практическую ценность после перехода от табличного способа верстки к блочному.</p> <p><b>Float: left (right) </b> трансформирует блочный элемент в плавающий, выравнивает по левому (правому) краю родительского блока и устанавливает обтекание справа (слева) текстом и другими элементами.</p> <p>Для примера, создадим четыре блока, которые нужно разместить в ряд:</p> <p><! DOCTYPE html> < html> < head> < meta charset= "utf-8" > < link rel= "stylesheet" media= "all" type= "text/css" href= "style.css" /> </ head> < body> < div class = "bblock" > Строим</ div> < div class = "bblock" > горизонтальный</ div> < div class = "bblock" > ряд</ div> < div class = "bblock" > из дивов</ div> </ body> </ html> </p> <p>И внешнюю таблицу стилей с следующим содержимым:</p> <p>div { float: left; <span>/*Задаем обтекание*/ </span> line- height: 120px; font- size: 40px; background: dodgerblue; color: white; margin- top: 60px; width: 320px; <span>/*Фиксируем ширину блока*/ </span> } </p> <p>В результате получаем четыре блока, расположенные в горизонтальный ряд и выровненные по левому краю родительского блока:</p> <p>Иногда на практике бывает необходимо выровнять блоки по правому краю родительского элемента. Изменим обтекание блоков в предыдущем примере:<br></p><p>float: right; </p> <p>Обратите внимание на надписи, расположенные в блоках. На первый взгляд может показаться, что пример отработал криво. Но на самом деле, браузер обработал код правильно: прочитал блоки сверху вниз, и сделал то, что мы от него просили - выровнял по правому краю. Учтите этот момент при использовании свойства <i>float: right </i>.</p> <p>Для того, чтобы прервать обтекание элементов с какого-то конкретного места, используйте строчку:</p> <p>< div style= "clear: both;" ></ div> </p> <p>В рассмотренном выше примере расстояния между блоками мы задавали при помощи отступа <i>margin-right </i>. Но что делать, если у вас при верстке страницы возникла задача: разместить блоки в ряд, центрировать их, да и еще чтобы отступы были только между ними, но никак не снаружи?</p> <p>Алгоритм действий следующий.</p> <p>< div class = "wrap" > <!-- Создаем дополнительную обертку- родительский элемент --> < div class = "bblock" > Строим</ div> < div class = "bblock" > горизонтальный</ div> < div class = "bblock" > ряд</ div> < div class = "bblock" > из дивов</ div> </ div> </p> <p>Wrap { width: 1310px; <span>/*фиксируем ширину обертки*/ </span> margin: 0 auto; /*центрируем ее*/ background: darkgray; height: 120px; <span>/*Задаем высоту обертки*/ </span> } . bblock { float: left; <span>/*Задаем обтекание*/ </span> line- height: 120px; <span>/*Высота строки + верт. центрирования текста*/ </span> font- size: 40px; background: dodgerblue; color: white; width: 320px; <span>/*Фиксируем ширину блока*/ </span> margin- right: 10px; text- align: center; <span>/*Центрируем текст по горизонтали*/ </span> } . wrap : last- child { margin- right: 0px; <span>/*Убираем поле последнего div-а*/ </span> } </p> <p>В результате получаем такую картину:</p> <p>Ну что же, всех практических ситуаций не рассмотришь, по этому перейдем к общим особенностям.</p> <p><b>Важно!!! </b></p> <h3>Метод «Inline-block»</h3> <p>Как строчные так и блочные элементы имеют свои преимущества и недостатки в контексте каждой конкретной решаемой задачи. А что если объединить их преимущества?</p> <p>Встречайте, гвоздь программы – свойство <i>display: inline-block </i>.</p> <p><b>display: inline-block </b> генерирует блочно-строчный элемент, который по сути является строчным, но сохраняет блочные свойства – позволяет изменять линейные размеры, задавать поля, отступы и т.д.</p> <p>Блочно-строчный элемент имеет следующие свойства:</p> <ul><li>высота и ширина блока определяется автоматически по содержимому и значению отступов (<i>padding </i>)</li> <li>высота и ширина блока может быть задана фиксировано</li> <li>Отсутствует эффект схлопывания границ .</li> </ul><p>Рассмотрим пример создания простого навигационного меню, содержащего картинку и ссылку.</p> <p>< div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /></ p> < p class = "string" >< a href= "#" > Ссылка меню 1 длиннее обычного</ a></ p> </ div> < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /></ p> < p class = "string" >< a href= "#" > Ссылка меню 2 </ a></ p> </ div> < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /></ p> < p class = "string" >< a href= "#" > Ссылка меню 3 </ a></ p> </ div> < div class = "nav" > < p>< img src= "./vaden-pro-logo.png" alt= "" /></ p> < p class = "string" >< a href= "#" > Ссылка меню 4 </ a></ p> </ div> </p> <p>Nav { display: inline- block; <span>/*Задаем блочно-строчное отображение*/ </span> width: 180px; <span>/*задаем ширину блока*/ </span> background: dodgerblue; } . string { text- align: center; <span>/*Равняем текст по-горизонтали*/ </span> } </p> <p>В результате получаем такую менюшку:</p> <p><img src='https://i1.wp.com/vaden-pro.ru/sites/default/files/inlinenotgood1_0.jpg' width="100%" loading=lazy></p> <p>Как видим, получилось кривовато... Но расстраиваться мы не намерены, по-этому применяем к нашим дивам CSS свойство <i>vertical-align </i> (подробнее см. ниже):</p> <p>vertical- align: top; </p> <p>Теперь наша навигационная панель выровнялась по верхней линии:</p> <p><img src='https://i0.wp.com/vaden-pro.ru/sites/default/files/inlinenorm1_0.jpg' width="100%" loading=lazy></p> <p>Конечно, приведенный пример является примитивным, но я уверен, что на его основе вы сможете создать настоящий шедевр!!!</p> <p><b>Важно!!! </b></p> <ul><li>Для древних <a href="/vse-versii-mazily-na-russkom-skachat-i-ustanovit-brauzer-mozilla-firefox-russkaya.html">версий Firefox</a> добавляем строчку:<br><p>display: - moz- inline- stack; </p><br> и оборачиваем элемент в дополнительную div-обертку.</li> <li>IE 7 и более ранние версии - добавляем строчки:<br><p>zoom: 1 ; /*задаем hasLayout*/ * display: inline; <span>/*звездочка – хак для IE */ </span> _height: 250px; <span>/*в IE6 не работает min-height*/ </p></li> <li>Замечу, что на указанные строчки избирательно реагируют конкретные браузеры (на первую – Firefox, на остальные - IE).</li> </ul><h3>Метод «Table»</h3> <p>Табличный подход долгое время был стандартом верстки, что в первую очередь объяснялось простотой и интуитивной понятностью разметки. Скорее всего, именно это и послужило причиной появления табличного форматирования в CSS.</p> <p>Свойства <i>display: table </i> (<i>table-cell </i>, <i>inline-table </i>), позволяют выполнять табличное форматирование элементов без применения HTML таблиц.</p> <p>Для горизонтального размещения блоков нам понадобится родительский элемент, имеющий свойство <i>display: table </i>, и <a href="/css-vtoroi-dochernii-element-dochernie-i-kontekstnye-css.html">дочерние элементы</a> (ячейки), имеющие свойство <i>display: table-cell </i>:<br></p><p>< div class = "wrap" > < div class = "bblock" > Строим</ div> < div class = "bblock" > табличный</ div> < div class = "bblock" > ряд</ div> < div class = "bblock" > из дивов</ div> </ div> </p> <p>Bblock { display: table- cell; font- size: 32px; width: 200px; height: 200px; background: gold; text- align: center; vertical- align: middle; } . wrap { display: table; border- spacing: 20px 20px; background- color: darkgray; } </p> <p><b>Важно!!! </b></p> <ol><li>В отличии от методов «Inline-block» и «float», при уменьшении ширины окна веб-браузера, ячейки не перемещаются вниз.</li> <li>У вас нет возможности задавать свойство margin для ячеек псевдотаблицы.</li> <li>Кросс-браузерность. Свойства из семейства display: table* не поддерживаются IE6, IE7. Кроме того, в IE8 вы можете наблюдать динамическую ошибку рендеринга псевдотабличных элементов в виде рандомно пропадающих ячеек. <a href="/ne-sovpadaet-parol-s-enum-panbagon-raznye-usloviya-na-polyah.html">Данная ошибка</a> чаше всего проявляется при первичной прорисовке документа</li> </ol> <p>Свойство <b>position </b> имеет следующие значения<br><input class="static" type="radio" name="odin">static <input class="relative" type="radio" name="odin">relative <input class="absolute" type="radio" name="odin">absolute <input class="fixed" type="radio" name="odin">fixed <br> Только совместно с ним применяются свойства (искл. position: static;)<br><input class="top" type="checkbox">top <input class="bottom" type="checkbox">bottom <input class="right" type="checkbox">right <input class="left" type="checkbox">left <input class="z" type="checkbox"><br> Одновременно могут присутствовать<br><input class="margin" type="checkbox">margin <input class="transform" type="checkbox">transform <input class="float" type="checkbox">float (искл. position: absolute; и position: fixed;)<br></p><p> <style type="text/css"> .primer { border: 4px solid #456; width: 200px; background: #fff; position: fixed; position: static; position: relative; position: absolute; <span> margin: 15px -15px -15px 15px; </span><span> -moz-transform: translate(15px, 15px); -webkit-transform: translate(15px, 15px); -o-transform: translate(15px, 15px); -ms-transform: translate(15px, 15px); </span> z-index: 100; float: left; top: 15px; bottom: 15px; right: 15px; left: 15px; } </style> <div class="primer"></div> <style type="text/css"> .primer1 { border: 4px solid #087e11; width: 200px; background: #e1e1e1;<span> z-index: 200; position: relative; </span> } </style> <div class="primer1"></div></p><p>Добавить пустой тег перед div с class="primer" - .</p><h2>Введение</h2><p>Элементы на веб-странице занимают определённое пространство. По аналогии с корабликами в игре "Морской бой". Между кораблями должны быть пустые клеточки - margin.</p><p>Для того, чтобы один элемент поместить поверх другого, нужно задать отрицательное значение для margin. Но тогда содержимое тегов будет накладываться друг на друга. С помощью свойств position и они как бы приподнимаются на уровень 2.</p><p>В естественном порядке нижние теги в коде показаны над верхними. Благодаря z-index на уровне 2 можно самим определить видимый элемент.</p><br><img src='https://i0.wp.com/4.bp.blogspot.com/-xP3KxTyDZkI/T4LFW038pUI/AAAAAAAAC3c/2qomvUmh_Qw/s400/z-index.png' width="100%" loading=lazy><h2>Статического позиционирование - position: static;</h2><p>position: static используется по умолчанию и отменяет действие relative, absolute и fixed. Значения свойств top, bottom, right, left игнорируются. При отсутствии transform не учитывается и z-index.</p><p> <style type="text/css"> z-index: 3; } .svetlyi2 { background-color: #fff; width: 250px; z-index: 2; margin: 0px -30px -30px 30px; } .svetlyi3 { background-color: #f5f5dc; width: 250px; z-index: 1; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> </p><h2>Относительное позиционирование - position: relative;</h2><p>Тому блоку, которому мы присвоим position: relative будет отдан приоритет. Содержимое нижнего элемента скрывается.</p><p> <style type="text/css"> margin: 0px -60px -30px 60px; <b>position: relative; </b> </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> <br></p><p>Для того, чтобы расположить блок Б поверх В, но ниже А, недостаточно присвоить и ему position: relative, поскольку в коде он стоит ниже блока А, а значит будет его перекрывать.</p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; margin: 0px -60px -30px 60px; <b>position: relative; </b> } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; <b>position: relative; </b> } .svetlyi3 { background-color: #f5f5dc; width: 250px; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> <br></p><p>Нужно задать для элемента Б ещё и z-index меньше, чем у блока А.</p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; margin: 0px -60px -30px 60px; } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; } .svetlyi3 { background-color: #f5f5dc; width: 250px; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> <br></p><p>Вместо margin при относительном позиционировании иногда лучше использовать свойства top, bottom, right, left. Точкой отсчёта для них является исходное положение элемента. При этом блок Б продолжает располагаться так, словно блок А находится на прежнем месте - он оставляет для него пустое пространство. Поэтому можно не колдовать с пустым div ().<br></p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; <b>top: 30px; left: 60px; position: relative; z-index: 2; </b> } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; <b>position: relative; z-index: 1; </b> } .svetlyi3 { background-color: #f5f5dc; width: 250px; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> <br></p><p>Полная аналогия со свойством </p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; <b>transform: translate(60px, 30px); z-index: 2; </b> } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; <b>position: relative; z-index: 1; </b> } .svetlyi3 { background-color: #f5f5dc; width: 250px; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> </p><h3>Для встроенных элементов</h3><p>Встроенные элементы margin не смещает вниз и вверх (). Только top, bottom<br></p><p> <style type="text/css"> <b>top: 30px; position: relative; </b> </style> <div class="temnyi"> <span class="svetlyi2">Б</span><span class="svetlyi1">А</span><span class="svetlyi2">Б</span> </div> или<br> <style type="text/css"> .temnyi { background-color: #666; width:500px; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; <b>transform: translate(0px, 30px); </b> } .svetlyi2 { background-color: #fff; width: 250px; } </style> <div class="temnyi"> <span class="svetlyi2">Б</span><span class="svetlyi1">А</span><span class="svetlyi2">Б</span> </div> </p><p>Б А Б </p><h2>Абсолютное и фиксированное позиционирование</h2><p>Казалось бы, что блок с position: absolute должен находиться выше position: relative, но это нет так, тут действует естественный порядок. А значит z-index позволит между ними выбрать приоритетный элемент.<br></p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; margin: 0px -60px -30px 60px; <b>position: relative; </b> } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; <b>position: absolute; </b> } .svetlyi3 { background-color: #f5f5dc; width: 250px; } </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> </p><p>Блок В игнорирует исходное положение блока Б, поскольку при position: absolute и position: fixed элемент перестаёт влиять на соседние теги ни посредством своей ширины/высоты, ни посредством float: left. <br></p><p> <style type="text/css"> .temnyi { background-color: #666; width:500px; text-align: center; font-size: 250%;} .svetlyi1 { background-color: #ccc; width: 250px; margin: 0px -60px -30px 60px; <b>position: relative; z-index: 2; </b> } .svetlyi2 { background-color: #fff; width: 250px; margin: 0px -30px -30px 30px; <b>position: absolute; z-index: 1; </b> } .svetlyi3 { background-color: #f5f5dc; width: 250px; <b>margin-top: 20px; </b>} </style> <div class="temnyi"> <div class="svetlyi1">А</div> <div class="svetlyi2">Б</div> <div class="svetlyi3">В</div> </div> </p><h2>Итоговая таблица</h2><table border="1" style="font-size: 85%; background-color: #fff5d7;"><tr style="background-color: #dbd1b2;"><td width="18%">отличительные свойства </td> <td width="19%">position: static; </td> <td width="24%">position: relative;<br> transform: translate(); </td> <td width="20%">position: absolute; </td> <td width="19%">position: fixed; </td> </tr><tr><td style="background-color: #f2e8c9;">наложение </td> <td>элементы лучше не помещать друг на друга </td> <td colspan="3">элементы имеет приоритет видимости над static. Другие значения равнозначны. Видимым будет тот, кто ниже находится в коде, либо обладает большим значением z-index </td> </tr><tr><td style="background-color: #f2e8c9;">точка отсчёта top, right, bottom и left </td> <td>игнорируются </td> <td>исходное положение элемента </td><td>край родительского элемента </td><td>край окна браузера </td> </tr><tr><td style="background-color: #f2e8c9;">элементы вокруг </td> <td>учитывают текущее положение элемента </td><td>учитывают исходное положение элемента </td> <td colspan="2">игнорируют положение элемента </td> </tr><tr><td style="background-color: #f2e8c9;">width: 100%; это ширина </td> <td colspan="2">элемента (для встроенного)/родительского элемента (для блочного) </td><td>родительского элемента с position не в значении static </td> <td>окна браузера </td> </tr><tr><td style="background-color: #f2e8c9;">при прокрутки страницы элемент </td><td colspan="3">перемещается </td> <td>"прилипает" к заданному месту окна браузера </td> </tr></table><p>А теперь для закрепления материала пощёлкайте по кнопкам в начале статьи, подумайте почему произошли именно такие изменения.</p> <p>Блочный элемент в HTML –это такой элемент, который занимает по умолчанию всю ширину родительского элемента. Родительским элементом может быть другой блочный элемент, или окно браузера. Блочному элементу с помощью свойств CSS можно задать ширину (width) и высоту (height). Позиционированием блочных элементов называется процесс их расположения внутри окна браузера и относительного друга с помощью CSS свойств position , left , top , right и bottom . Свойство CSS position предназначено для задания одного из четырёх доступных видов позиционирования: static (по умолчанию), absolute (абсолютное), fixed (фиксированное) и relative (относительное). Остальные <a href="/kakie-znacheniya-mozhet-prinimat-svoistvo-text-align-oformlenie-teksta-s.html">CSS свойства</a>, а именно left , top , right и bottom предназначены для задания расстояний относительно левого, верхнего, правого и нижнего края родительского элемента. Также блочные элементы при задании определенных свойств могут накладываться друг друга, и <a href="/besprovodnoi-skaner-shtrih-kodov-s-funkciei-sbora-dannyh-alanda-ct007-rasshirennye-vozmozhnosti-dekodi.html">данную возможность</a> то же можно использовать на сайтах.</p> <h3>Позиционирование по умолчанию (static)</h3> <p>Если вы не указали position у блочного элемента или указали static , что одно и то же, то в таком случае блочные элементы располагаются по порядку. Причем следующий блок (например: красный) располагается с новой строки. Так же на данное позиционирование не действует задание расстояний left , top , right и bottom .</p><p> <body> <div style="width: 200px; height: 100px; border: 1px solid black; background: green;"></div> <div style="width: 300px; height: 150px; border: 1px solid black; background: red;"></div> </body> </p><h3>Абсолютное позиционирование (absolute)</h3> <p>При абсолютном позиционировании положения элемента задаётся относительно краёв окна браузера с помощью расстояний, задаваемых свойствами left , top , right и bottom . Если указать расстояния left и right одновременно, и они будут противоречить между собой, то предпочтение отдаётся left , то же самое касается top и bottom , в которых больший приоритет имеет расстояние top . Абсолютное позиционирование применяется очень часто совместно с относительным позиционированием в дизайнерских целях, когда необходимо разместить <a href="/css-vdavlennyi-shrift-css-neskolko-tehnik-dlya-razlichnyh-effektov.html">различные элементы</a> относительного друг друга, так же может применяться для создания выпадающих меню, разметки сайта и т.д.</p><p> <body> <div style="width: 200px; height: 100px; border: 1px solid black; background: green;"></div> <div style="width: 300px; height: 200px; position: absolute; top: 50px; left: 100px; border: 1px solid black; background:red;"></div> </body> <br><img src='https://i0.wp.com/itchief.ru/assets/images/tickets/2014.10/position-absolute.png' width="100%" loading=lazy></p><h3>Фиксированное позиционирование (fixed)</h3> <p>Фиксированное позиционирование отличается от других видов позиционирования и не перемещается вместе с контентом при скроллинге страницы. Блочные элементы с фиксированным позиционированием привязываются с помощью свойств left , top , right и bottom к краям окна браузера. Фиксированное позиционирование применяется для создания фреймовых интерфейсов (окно браузера делится на несколько областей), фиксированного меню, фиксированного подвала сайта и "постоянных" блоков (перечень ссылок, <a href="/znachok-podelitsya-v-kontakte-izbavlyaemsya-ot-javascript-v-socialnyh-knopkah-facebook.html">социальные кнопки</a> и т.д.).</p><p> <body> <div style="width: 200px; height: 2000px; border: 1px solid black; background: green;"></div> <div style="width: 600px; height: 200px; position: fixed; top: 100px; left: 100px; border: 1px solid black; background:red;"></div> </body> <br><img src='https://i1.wp.com/itchief.ru/assets/images/tickets/2014.10/fixed_position.png' width="100%" loading=lazy></p><h3>Относительное позиционирование (relative)</h3> <p>Относительное позиционирование задаётся с помощью задания расстояний left , top , right и bottom относительно его текущего положения.</p><p> <body> <div style="width: 200px; height: 100px; border: 1px solid black; background: green;"></div> <div style="width: 300px; height: 200px; position: relative; top: 50px; left: 100px; border: 1px solid black; background: red;"></div> </body> <br><img src='https://i2.wp.com/itchief.ru/assets/images/tickets/2014.10/position-relative.png' width="100%" loading=lazy></p><p>Однако такое положение блока можно создать и с помощью свойства margin (отступы).</p><p> <body> <div style="width: 200px; height: 100px; border: 1px solid black; background:green;"></div> <div style="width: 300px; height: 200px; margin-top: 50px; margin-left: 100px; border: 1px solid black; background: red;"></div> </body> </p><p>Относительное позиционирование не интересно использовать само по себе, оно в основном применяется вместе с абсолютным позиционированием.</p> <p>Рассмотрим варианты:</p> <br><img src='https://i2.wp.com/itchief.ru/assets/images/tickets/2014.10/absolute_in_relative.png' width="100%" loading=lazy> <p> <br> В CSS есть свойства, которые отвечают за позиционирование элемента. То есть, ему отступы будут заданы от края документа или относительно родительского элемента? Для этого используется свойство position. Оно имеет несколько значений, о них и напишу.</p><h2>absolute</h2> Данное значение устанавливается для таких элементов, которые должны отображаться так, как будто других на странице и не существует. <br> Положение зависит от того, есть ли <a href="/javascript-kak-poluchit-elementy-roditelya-tehniki-raboty-s-dom.html">родительские элементы</a> с таким же свойством (position absolute relative fixed): <br><b>1. </b> если нет, то положение будет определяться относительно левого <a href="/kak-ispravit-strannyi-pryamougolnik-v-levom-verhnem-uglu-chto.html">верхнего угла</a> окна<br><b>2. </b> если есть, то будет положение будет определяться относительно них<h2>fixed</h2> Чёткое фиксированное положение элемента. Его координаты будут привязаны к <a href="/chto-takoe-sootnoshenie-storon-v-fotoapparate-sootnoshenie.html">X,Y сторонам</a> браузера. При скролле страницы элементы будут оставаться на своём месте.<h2>relative</h2> Данное значение определяет положение элемента уже относительно его исходного места.<h2>static</h2> Значение устанавливает элемент так, как он должен располагаться в обычном состояние относительно других элементов.<h2>Располагаем элементы</h2> Установив значения absolute relative fixed элементом возможно манипулировать, перемещая его относительно других элементов. Делается это свойствами top, right, bottom, left. Значения данных свойств устанавливают на сколько сместится элемент относительного текущего положения.<p> #wrapper {<br> position: relative;<br> bottom: 15px; /* смещен на 15px от низа */<br> left: 30px; /* смещен на 30px слева */<br> } <br> При этом можно указывать и отрицательные значения.</p><p> #wale {<br> position: relative;<br> right: -10px; /* смещен на -10px справа (10px слева) */<br> } </p><h2>Примеры позиционирования в CSS</h2><p> <!DOCTYPE html><br> <html><br> <head><br> <meta charset="utf-8"><br> <title>position










Ну и уже по обыкновению смотрим пример проработки) Для наглядности попробуйте изменить размеры окна браузера.

Проблемы