Абсолютне позиціонування означає, що елемент повністю виведений із нормального потоку макета сторінки. Що стосується решти елементів на сторінці, абсолютно розташований елемент просто не існує. Потім сам елемент малюється окремо, на зразок "вгорі" всього іншого, у позиції, яку ви вказали, використовуючиleft, right, top and bottom
атрибути.
Використовуючи позицію, яку ви вказуєте за допомогою цих атрибутів, елемент розміщується в цій позиції в межах останнього елемента предка, який має атрибут позиції нічого іншого, крім static
(елементи сторінки за замовчуванням для статичного, коли не вказаний атрибут позиції), або документа документа (браузер viewport), якщо такого предка не існує.
Наприклад, якщо у мене був цей код:
<body>
<div style="position:absolute; left: 20px; top: 20px;"></div>
</body>
... то <div>
розміщуватиметься 20 пікселів у верхній частині вікна перегляду браузера, а 20 пікселів - з лівого краю того ж.
Однак якщо я зробив щось подібне:
<div id="outer" style="position:relative">
<div id="inner" style="position:absolute; left: 20px; top: 20px;"></div>
</div>
... тоді inner
div буде розміщений на 20px від верхньої частини outer
div, а 20px з лівого краю того ж, тому що outer
div не розміщений, position:static
тому що ми явно встановили його для використання position:relative
.
З іншого боку, відносне позиціонування подібно до того, що взагалі немає позиціонування, а саме left, right, top and bottom
атрибути "виштовхують" елемент із звичайного розташування. Решта елементів на сторінці все ще викладаються так, як ніби елемент знаходився у звичайному місці.
Наприклад, якщо у мене був цей код:
<span>Span1</span>
<span>Span2</span>
<span>Span3</span>
... то всі три <span>
елементи сиділи б один біля одного, не перекриваючись.
Якщо я встановлю другий, <span>
щоб використовувати відносне позиціонування, як це:
<span>Span1</span>
<span style="position: relative; left: -5px;">Span2</span>
<span>Span3</span>
... тоді Span2 перекриє праву частину Span1 на 5 пікселів. Span1 та Span3 будуть сидіти там, де саме в першому прикладі, залишаючи проміжок у 5 пікселів між правою стороною Span2 та лівою стороною Span3.
Сподіваюсь, що трохи прояснить речі.