• Размещение блоков в html. Позиционирование CSS

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

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

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

    Немного о слоях (layers)

    Думаю, многие из вас слышали о таком понятии, как слой (layer). И, как правило, под слоем понимается блок, заданный тегом

    . На самом деле все немного не так.

    В HTML не существует слоев. Это просто метафора. Когда речь идет о слоях, то под ними понимается некий html контейнер (элемент), который может быть помещен в определенном месте веб-страницы.

    Вторым заблуждением является отнесение к слоям только блока, заданного тегом

    . Это тоже не верно. К ним также можно отнести параграфы (

    ), списки (

      ) и другие элементы.

      А теперь о
      ах.

      Как уже говорилось выше, задать местоположение можно любому HTML элементу. Для этого нет нужды всегда использовать тег

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

      Смысл применения блока, заданного тегом

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

      Позиционирование элементов.

      Существует четыре основных типа позиционирования:

      1. Статическое (Static)
      2. Абсолютное (Absolute)
      3. Фиксированное (Fixed)
      4. Относительное (Relative
      )

      Статическое (Static)

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

      Применение параметров left, top, right и bottom не приводит к каким-либо результатам.

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

      Абсолютное (Absolute)

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

      Фиксированное (Fixed)

      Уже из названия становится ясно, что в данном случае элемент фиксируется. Он располагается в определенном месте веб-страницы и никуда не сдвигается. Подобное выравнивание часто применяется по отношению к всплывающим окнам, когда они фиксируются по центру и не смещаются при прокрутке страницы.

      Относительное (Relative)

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

      Нужно уяснить, что расположение элемента в этом случае происходит относительно его же места в статическом положении. Это то, о чем упоминалось выше.

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

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

      Подведем итог.

      Итак, имеется свойство position . Это свойство может принимать 4 значения Static, Absolute, Fixed и Relative . По умолчанию идет Static .

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

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


      А теперь посмотрим, каким образом задаются координаты.

      Для этих целей применяются четыре вида свойств:

      1. Top
      2. Left
      3. Right
      4. Bottom

      Top - положительное значение (например, 20px) смещает блок на 20 пикселей вниз. Отрицательное значение (-20px) смещает элемент на 20 пикселей верх. Все это происходит относительно левого верхнего угла.

      Left - смещение влево или вправо, в зависимости от знака. Относительно левого верхнего угла.

      Right - смещение вправо и влево, смотря какой знак. Относительно правого верхнего угла.

      Bottom - смещение вверх или вниз, зависит от знака. Происходит относительно левого нижнего угла.

      Вот код HTML:





      А это CSS:

      #1 {
      position:relative;
      top:100px;
      left:100px;
      width:500px;
      height:500px;
      background-color:#CCCCCC;
      }

      #11 {
      background-color:#003399;
      position:absolute;
      bottom: -30px;
      right: -50px;
      width:100px;
      height:100px;
      }

      #2 {
      background-color:#990066;
      width:200px;
      height:300px
      }

      Потренируйтесь.

      Пока писал и сам разобрался .


      До некоторого времени я, как и многие из вас, пользовался двумя способами:
      1. Первый способ основан на свойстве float. Левому блоку задаётся float: left, правому float: right
      2. Второй способ заключается в абсолютном позиционировании правого блока, с параметрами right: 0 либо left: 100%, margin-left: -(ширина блока)
      Главный недостаток обоих способов заключается в том, что, если блоки нужно выравнять по нижней границе или по средней линии относительно друг друга, то приходится методом подбора смещать блоки по вертикали, задавая им либо top: anyValue, либо margin-top: anyValue. А у первого способа плюс ко всему есть ещё один, не то чтобы недостаток, но неприятная мелочь. Это необходимость очищать поток с помощью clearFix"a, overflow или дополнительного дива.
      Итак способ номер 3. Для начала код:

      Собственно HTML

      Copy Source | Copy HTML
      1. < div class ="wrap">
      2. < div class ="left">< a href ="#"> Левый блок< div class ="right">< a href ="#"> Правый блок

      Собственно CSS

      Copy Source | Copy HTML
      1. .wrap {
      2. width : 500px ;
      3. background : #555 ;
      4. height : 500px ;
      5. .left , .right {
      6. display : inline -block ;
      7. //display: inline;
      8. //zoom: 1;
      9. width : 100% ;
      10. margin-right : -100% ;
      11. vertical-align : bottom ;
      12. .right {
      13. text-align : right ;
      14. .left a , .right a { display : inline -block ; position : relative ; }
      15. .left a { width : 200px ; height : 100px ; background : green ; }
      16. .right a { width : 100px ; height : 200px ; background : pink ; }

      Пояснения

      Суть способа заключается в том, чтобы наложить блоки друг на друга посредством margin-right: -100% и содержимое правого блока выровнять по правому краю с помощью text-align: right.
      Оба блока (right и left) желательно записывать в одну строку, иначе из-за символа переноса строки правый блок будет чуть-чуть вылезать за границы блока-родителя.
      Ссылкам обязательно нужно ставить position: relative, иначе из-за наложения блоков некоторые могут быть некликабельные.

      Плюсы способа

      Главный плюс в том, что теперь для наших блоков начинает работать vertical-align. И мы легко можем выровнять их и по верхней границе и по нижней и по центру.

      Минусы способа

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

      P.S.

      Я не встречал такого способа в интернете, посему просьба: если кто-то найдёт аналогичную статью опубликованную раньше, сообщите мне пожалуйста.

      Upd.

      В комментариях моё внимание внимание обратили на способ, использующий text-align: justify. Этот способ тоже хорош, но у него есть два недостатка. Во-первых он требует введения дополнительного элемента, эмулирующего последнюю строку текстового блока, а во-вторых, он не будет работать в IE6-IE7 для блочных элементов.

      CSS рассматривает макет html-документа как дерево элементов. Уникальный элемент, у которого нет родительского элемента, называется корневым элементом. Модуль CSS-позиционирование описывает, как любой из элементов может быть размещен независимо от порядка документа (т.е. извлечен из «потока»).

      В CSS2 каждый элемент в дереве документа генерирует ноль или более блоков в соответствии с блочной моделью. Модуль CSS3 дополняет и расширяет схему позиционирования. Расположение этих блоков регулируется:

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

      Схемы позиционирования

      В CSS блок элемента может быть расположен в соответствии с тремя схемами позиционирования:

      1. Нормальный поток

      Нормальный поток включает блочный контекст форматирования (элементы с display block , list-item или table), строчный (встроенный) контекст форматирования (элементы с display inline , inline-block или inline-table), и относительное и «липкое» позиционирование элементов уровня блока и строки.

      2. Обтекание

      В обтекающей модели блок удаляется из нормального потока и позиционируется влево или вправо. Содержимое обтекает правую сторону элемента с float: left и левую сторону элемента с float: right .

      3. Абсолютное позиционирование

      В модели абсолютного позиционирования блок полностью удаляется из нормального потока и ему присваивается позиция относительно содержащего блока. Абсолютное позиционирование реализуется с помощью значений position: absolute; и position: fixed; .

      Элементом «вне потока» может быть плавающий, абсолютно позиционированный или корневой элемент.

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

      Для некорневого элемента с position: static; или position: relative; его содержащий блок формируется краем области содержимого ближайшего родительского блока уровня блока, ячейки таблицы или уровня строки.

      Для некорневого элемента с position: absolute; его содержащим блоком устанавливается ближайшего родительский элемент со значением position , отличным от static следующим образом:

      • если предок — элемент уровня блока, содержащим блоком будет область содержимого плюс поля элемента padding ;
      • если предок — элемент уровня строки, содержащим блок будет область содержимого;
      • если предков нет, то содержащий блок элемента определяется как начальный содержащий блок.

      Для «липкий» блока содержащим блоком является ближайший предок с прокруткой или окна просмотра, в противном случае.

      2. Выбор схемы позиционирования: свойство position

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

      Свойство не наследуется.

      position
      Значение:
      static Блок располагается в соответствии с нормальным потоком. Свойства top , right , bottom и left не применяются. Значение по умолчанию.
      relative Положение блока рассчитывается в соответствии с нормальным потоком. Затем блок смещается относительно его нормального положения и во всех случаях, включая элементы таблицы, не влияет на положение любых следующих блоков. Тем не менее, такое смещение может привести к перекрытию блоков, а также к появлению полосы прокрутки в случае переполнения.

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

      Относительно позиционированный блок создает новый содержащий блок для абсолютно позиционированных потомков.

      Влияние position: relative; на элементы таблицы определяется следующим образом:
      Элементы с table-row-group , table-header-group , table-footer-group иd table-row смещаются относительно их обычной позиции в таблице. Если ячейки таблицы занимают несколько строк, смещаются только ячейки начальной строки.
      table-column-group , table-column не смещает соответствующий столбец и не оказывает визуального влияния.
      table-caption and table-cell смещаются относительно своего нормального положения в таблице. Если ячейка таблицы охватывает несколько столбцов или строк, то она смещается целиком.

      absolute Положение блока (и, возможно, размер) задается с помощью свойств top , right , bottom и left . Эти свойства определяют явное смещение относительно его содержащего блока. Абсолютно позиционированные блоки полностью удаляется из нормального потока, не влияя на расположение сестринских элементов.

      Отступы margin абсолютно позиционированных блоков не схлопываются.

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

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

      sticky Положение блока рассчитывается в соответствии с нормальным потоком. Затем блок смещается относительно своего ближайшего предка с прокруткой или окна просмотра, если ни у одного из предков нет прокрутки.

      «Липкий» блок может перекрывать другие блоки, а также создавать полосы прокрутки в случае переполнения.

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

      «Липкий» блок создает новый содержащий блок для абсолютно и относительно позиционированных потомков.

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

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

      initial Устанавливает значение свойства в значение по умолчанию.
      inherit Наследует значение свойства от родительского элемента.

      Синтаксис

      Position: static; position: relative; position: absolute; position: sticky; position: fixed; position: initial; position: inherit;
      Рис. 1. Разница между статичным, относительным и абсолютным позиционированием

      3. Смещение блока: свойства top, right, bottom, left

      Элемент считается позиционированным, если свойство position имеет значение, отличное от static . Позиционированные элементы генерируют позиционированные блоки и могут быть расположены в соответствии со следующими четырьмя физическими свойствами:

      Синтаксис

      Top: 10px; top: 2em; top: 50%; top: auto; top: inherit; top: initial;

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

      Синтаксис

      Right: -10px; right: .5em; right: -10%; right: auto; right: inherit; right: initial;

      Свойство right указывает расстояние, на которое правый край абсолютно позиционированного блока (с учетом его margin) смещен влево от правого края содержащего блока. Для относительно позиционированных блоков определяет смещение относительно правого края самого блока.

      Синтаксис

      Bottom: 50px; bottom: -3em; bottom: -50%; bottom: auto; bottom: inherit; bottom: initial;

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

      Синтаксис

      Left: 50px; left: 10em; left: 20%; left: auto; left: inherit; left: initial;

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

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

      4. Обтекание: свойство float

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

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

      Правила, регулирующие поведение плавающих боков, описываются свойством float .

      Свойство не наследуется.

      Синтаксис

      Float: left; float: right; float: none; float: inherit;

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

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

      Свойство автоматически изменяет вычисляемое (отображаемое в браузере) значение свойства display на display: block для следующих значений: inline , inline-block , table-row , table-row-group , table-column , table-column-group , table-cell , table-caption , table-header-group , table-footer-group . Значение inline-table меняет на table .

      Свойство не оказывает влияние на элементы с display: flex и display: inline-flex . Не применяется к абсолютно позиционированным элементам.


      Рис. 3. Обтекание элементов

      5. Управление потоком рядом с плавающими элементами: свойство clear

      Свойство clear указывает, какие стороны блока/блоков элемента не должны прилегать к плавающим блокам, находящемся выше в исходном документе. В CSS2 и CSS 2.1 свойство применяется только к неплавающим элементам уровня блока.

      Свойство не наследуется.

      Синтаксис

      Clear: none; clear: left; clear: right; clear: both; clear: inherit;

      Для предотвращения отображение фона или границ под плавающими элементами используется правило {overflow: hidden;} .

      6. Определение контекста наложения: свойство z-index

      В CSS каждый блок имеет позицию в трех измерениях. В дополнение к горизонтальному и вертикальному положению, блоки выкладываются вдоль оси Z друг над другом. Положение вдоль оси Z особенно важно, когда блоки визуально накладываются друг на друга.

      Рис. 1. Положение элементов вдоль оси Z

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

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

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

      Свойство не наследуется.

      Синтаксис

      Z-index: auto; z-index: 0; z-index: 5; z-index: 999; z-index: -1; z-index: inherit; z-index: initial;

      Блочный элемент в HTML –это такой элемент, который занимает по умолчанию всю ширину родительского элемента. Родительским элементом может быть другой блочный элемент, или окно браузера. Блочному элементу с помощью свойств CSS можно задать ширину (width) и высоту (height). Позиционированием блочных элементов называется процесс их расположения внутри окна браузера и относительного друга с помощью CSS свойств position , left , top , right и bottom . Свойство CSS position предназначено для задания одного из четырёх доступных видов позиционирования: static (по умолчанию), absolute (абсолютное), fixed (фиксированное) и relative (относительное). Остальные CSS свойства, а именно left , top , right и bottom предназначены для задания расстояний относительно левого, верхнего, правого и нижнего края родительского элемента. Также блочные элементы при задании определенных свойств могут накладываться друг друга, и данную возможность то же можно использовать на сайтах.

      Позиционирование по умолчанию (static)

      Если вы не указали position у блочного элемента или указали static , что одно и то же, то в таком случае блочные элементы располагаются по порядку. Причем следующий блок (например: красный) располагается с новой строки. Так же на данное позиционирование не действует задание расстояний left , top , right и bottom .

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

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


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

      Фиксированное позиционирование отличается от других видов позиционирования и не перемещается вместе с контентом при скроллинге страницы. Блочные элементы с фиксированным позиционированием привязываются с помощью свойств left , top , right и bottom к краям окна браузера. Фиксированное позиционирование применяется для создания фреймовых интерфейсов (окно браузера делится на несколько областей), фиксированного меню, фиксированного подвала сайта и "постоянных" блоков (перечень ссылок, социальные кнопки и т.д.).


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

      Относительное позиционирование задаётся с помощью задания расстояний left , top , right и bottom относительно его текущего положения.


      Однако такое положение блока можно создать и с помощью свойства margin (отступы).

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

      Рассмотрим варианты:


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

      Какие бывают виды

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

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

      Это первый из известных видов. Задается так: position: absolute. После этого блок теряет свои привычные свойства и полностью выпадает из нормального потока. Что представляет собой этот поток? Попробуйте поставить в разметке несколько блочных элементов подряд. Как они станут? Друг за другом, и ни как иначе.

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

      Теперь его можно перемещать с помощью свойств left, right, top и bottom. По умолчанию перемещение происходит относительно краев окна браузера, но если у родительского элемента задано position: relative, то смещение происходит относительно родительского блока.

      Block{ position: absolute; bottom: 0; right: 0; }

      Block {

      position : absolute ;

      bottom : 0 ;

      right : 0 ;

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

      < div id = "wrapper" >

      < div class = "block" > < / div >

      < / div >

      А теперь css-стили для этого фрагмента:

      #wrapper{ position: relative; } .block{ position: absolute; top: 0; right: 10px; }

      #wrapper{

      position : relative ;

      Block {

      position : absolute ;

      top : 0 ;

      right : 10px ;

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

      Относительное позиционирование css-элементов

      Это следующий вид и он записывается так – position: relative. Координаты задаются такими же свойствами, как и при абсолютном положении. Единственное существенное отличие заключается в том, что элемент формально не выпадает из потока – под него остается место.

      Работу этого значения можно сравнить с visibility: hidden, когда элемент скрывается со страницы, но место под него остается нетронутым. Такое же происходит и при относительном размещении – блок можно двигать куда угодно, но место под него остается пустым и его не займут другие части.

      Еще важно знать, что смещение происходит не от краев окна веб-обозревателя, а от того места, где изначально стоял блок. То есть:

      Block{ position: relative; top: 10px; right: 50px; }

      Block {

      position : relative ;

      top : 10px ;

      right : 50px ;

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

      Фиксация

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

      Position:static или обычное статическое положение

      Последний вид – статический, это обычное поведение блочный элементов. Его не нужно прописывать, потому что оно стоит по умолчанию, но все-таки знать о четвертом значении нужно. Иногда с position: static записывают, чтобы отменить другой вид позиционирования при определенных событиях на веб-странице.

      Как сделать позиционирование блоков в css правильно?

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

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

      Другие приемы: центровка, плавающие блоки

      Свойство position не решает всех проблем с расстановкой блочных элементов. Как бы вы, например, создали сетку сайта с его помощью? У меня нет хороших идей. Тут на помощь приходят другие свойства.

      С помощью float в css часто делают сетки. Свойство позволяет прижать блок к левому или правому краю родителя (float: left, float: right), давая возможность нескольким блочным элементам стать в одну линию, что встречается сплошь и рядом на любых сайтах.

      Центровка делается так: блоку нужно записать определенную ширину, после чего задать свойство margin: 0 auto. Именно значение auto выровняет его по горизонтали точно по центру. Естественно, для этого он должен быть единственным в своей строке, иначе ничего не получится.

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

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