В чем принципиальная разница между применением относительных и абсолютных значений в CSS?

Размещение элементов на веб-странице – это одна из основных задач веб-разработчика. Для достижения нужного эффекта в дизайне, необходимо знать различные свойства позиционирования, такие как relative и absolute. В этой статье мы рассмотрим подробное объяснение разницы между ними и приведем примеры их использования.

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

Свойство absolute, в отличие от relative, задает позиционирование элемента относительно его ближайшего родительского контейнера, который имеет заданное свойство позиционирования (не static). Если ближайший родительский контейнер не найден, элемент будет позиционироваться относительно тега body. Элементы с абсолютным позиционированием будут полностью удалены из потока документа, что означает, что соседние элементы будут заполнять место, которое было ранее занято абсолютным элементом. Кроме того, элементы с абсолютным позиционированием можно легко перекрывать друг друга.

Что такое relative и absolute?

Что такое relative и absolute?

В CSS есть два основных значения свойства position: relative и absolute. Они определяют, как элементы будут располагаться в документе и взаимодействовать между собой.

Значение relative задает относительное позиционирование элемента. Это означает, что элемент будет располагаться в соответствии с его исходным положением в потоке документа. Если установлены значения left, right, top или bottom, элемент будет сдвинут относительно своего исходного местоположения. Остальные элементы на странице будут продолжать занимать свои исходные позиции, и место, освобожденное относительным элементом, не будет заполняться.

Значение absolute задает абсолютное позиционирование элемента. Это означает, что элемент будет полностью удален из потока документа и его местоположение будет задаваться относительно ближайшего родительского элемента с позицией relative, absolute или fixed. Если такой родительский элемент не найден, позиционирование будет выполняться относительно окна браузера.

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

Пример использования относительного позиционирования:


<div style="position: relative; top: 20px; left: 50px;">
Этот текст будет сдвинут на 20px вниз и 50px вправо относительно своего исходного положения.
</div>

Пример использования абсолютного позиционирования:


<div style="position: absolute; top: 100px; left: 200px;">
Этот текст будет находиться в абсолютной позиции, отступая на 100px вниз и 200px вправо относительно ближайшего родительского элемента с позицией relative, absolute или fixed.
</div>

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

Как они работают?

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

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

Примеры использования абсолютного позиционирования:

  • Показать всплывающее окно поверх другого элемента.
  • Размещение элемента на заданной позиции на странице, независимо от других элементов.

Примеры использования относительного позиционирования:

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

Когда использовать relative?

Когда использовать relative?

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

  • Смещение элемента: Относительное позиционирование позволяет смещать элементы вверх, вниз, влево или вправо относительно их исходного положения. Например, можно установить значение top: 10px; или left: -20px; для перемещения элемента на указанное расстояние от его изначальной позиции.
  • Перекрывание элементов: Если требуется сделать так, чтобы один элемент перекрывал другой, относительное позиционирование может быть использовано для установки нового порядка элементов. Например, можно задать значение z-index: 2; для элемента с относительным позиционированием, чтобы он находился выше других элементов на странице.
  • Анимация и переходы: Относительное позиционирование часто используется вместе с анимацией или переходами CSS для создания эффектов движения или изменения размера элементов. Например, можно менять значение свойства left с помощью ключевых кадров (keyframes), чтобы создать анимацию перемещения элемента.

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

Когда использовать absolute?

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

  1. Создание всплывающих окон или всплывающих подсказок: При помощи position: absolute можно легко создать эффект всплывающего окна или подсказки, которые будут располагаться поверх других элементов на странице.
  2. Создание слайд-шоу или карусели: С помощью position: absolute можно легко создать слайд-шоу или карусель, где изображения будут переключаться и занимать определенное место на странице не зависимо от других элементов.
  3. Размещение элементов на изображении: Если необходимо разместить элементы (например, текстовые поля или кнопки) на определенных местах изображения, то position: absolute может быть очень полезным.
  4. Создание наложений (overlays): Если требуется создать наложение одного элемента поверх другого (например, при создании модального окна или всплывающего видео), то position: absolute и z-index позволят точно контролировать расположение этих элементов.

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

Свойства и значение relative

Свойства и значение relative

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

Когда вы устанавливаете "position: relative" для элемента, вы можете использовать свойства "top", "right", "bottom" и "left" для задания смещения элемента относительно его исходного положения. Например, если вы установите "top: 10px" и "left: 20px", элемент с относительным позиционированием сдвинется на 10 пикселей вниз и на 20 пикселей влево от своей исходной позиции.

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

Пример использования свойства "position: relative":

<div style="position: relative;">
<p>Это абзац с относительным позиционированием.</p>
<p style="position: relative; top: 10px; left: 20px;">Это относительно смещенный абзац.</p>
</div>

В данном примере первый абзац имеет относительное позиционирование, но не имеет заданных смещений. Второй абзац также имеет относительное позиционирование, но имеет смещение вниз на 10 пикселей и влево на 20 пикселей относительно своего исходного положения.

Свойства и значение absolute

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

Значение absolute по умолчанию для свойства position – static, при котором элемент не участвует в позиционировании и его позиция определяется потоком документа.

Основное применение свойства position с значением absolute – создание слоев поверх остального содержимого страницы. Например, можно задать позицию и определить координаты элемента на странице, независимо от его положения в потоке документа.

Пример использования свойства absolute:


<style>
.container {
position: relative;
height: 200px;
width: 200px;
background-color: lightgray;
}
.overlay {
position: absolute;
top: 50px;
left: 50px;
height: 100px;
width: 100px;
background-color: red;
}
</style>
<div class="container">
<div class="overlay"></div>
</div>

В данном примере создается контейнер с классом .container, у которого задано позиционирование relative. Внутри контейнера создается блок с классом .overlay, у которого задано позиционирование absolute, а также указаны координаты top и left, определяющие его положение внутри контейнера.

Результатом работы данного кода будет появление красного прямоугольника поверх серого фона контейнера, согласно заданным координатам.

Примеры использования relative

Примеры использования relative

Рассмотрим несколько примеров использования относительного позиционирования:

  1. Сдвиг элемента вправо:

    
    <div style="position: relative; left: 50px;">
    <p>Этот элемент сдвинут на 50 пикселей вправо</p>
    </div>
    
    
  2. Сдвиг элемента вниз:

    
    <div style="position: relative; top: 20px;">
    <p>Этот элемент сдвинут на 20 пикселей вниз</p>
    </div>
    
    
  3. Сдвиг элемента влево:

    
    <div style="position: relative; right: 30px;">
    <p>Этот элемент сдвинут на 30 пикселей влево</p>
    </div>
    
    
  4. Сдвиг элемента вверх:

    
    <div style="position: relative; bottom: 10px;">
    <p>Этот элемент сдвинут на 10 пикселей вверх</p>
    </div>
    
    

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

Примеры использования absolute

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

1. Размещение элемента внутри другого элемента:

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


<style>
.parent {
position: relative;
}
.child {
position: absolute;
top: 10px;
left: 20px;
}
</style>
<div class="parent">
<div class="child">
Я абсолютно позиционированный элемент
</div>
</div>

2. Создание сложных макетов страницы:

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


<style>
.menu {
position: relative;
}
.dropdown {
position: absolute;
top: 30px;
left: 0;
display: none;
}
.menu:hover .dropdown {
display: block;
}
</style>
<div class="menu">
Меню
<div class="dropdown">
Пункт 1
Пункт 2
Пункт 3
</div>
</div>

3. Создание модальных окон:

Абсолютное позиционирование также может быть использовано для создания модальных окон, которые должны быть полностью независимыми от положения и прокрутки страницы. Модальное окно может быть расположено в произвольном месте на странице и оставаться видимым, даже при прокрутке:


<style>
.modal {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
background-color: white;
padding: 20px;
}
</style>
<div class="modal">
Это модальное окно
</div>

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

Оцените статью
Про ножи