Posizionamento assoluto significa che l'elemento viene tolto completamente dal normale flusso del layout di pagina. Per quanto riguarda il resto degli elementi nella pagina, l'elemento assolutamente posizionato semplicemente non esiste. L'elemento stesso viene quindi disegnato separatamente, una sorta di "sopra" a tutto il resto, nella posizione specificata utilizzando gli left, right, top and bottomattributi.
Utilizzando la posizione specificata con questi attributi, l'elemento viene quindi posizionato in quella posizione all'interno del suo ultimo elemento predecessore che ha un attributo di posizione diverso da static(gli elementi della pagina vengono impostati di default su statico quando non è specificato alcun attributo di posizione) o il corpo del documento (browser viewport) se tale antenato non esiste.
Ad esempio, se avessi questo codice:
<body>
<div style="position:absolute; left: 20px; top: 20px;"></div>
</body>
... <div>sarebbe posizionato a 20px dalla parte superiore della finestra del browser e 20px dal bordo sinistro dello stesso.
Tuttavia, se ho fatto qualcosa del genere:
<div id="outer" style="position:relative">
<div id="inner" style="position:absolute; left: 20px; top: 20px;"></div>
</div>
... allora il innerdiv sarebbe posizionato a 20px dalla parte superiore del outerdiv e 20px dal bordo sinistro dello stesso, perché il outerdiv non è posizionato con position:staticperché lo abbiamo impostato esplicitamente per l'uso position:relative.
Il posizionamento relativo, d'altra parte, è come non dichiarare alcun posizionamento, ma gli left, right, top and bottomattributi "spingono" l'elemento fuori dal loro normale layout. Il resto degli elementi sulla pagina vengono comunque disposti come se l'elemento fosse nella sua posizione normale.
Ad esempio, se avessi questo codice:
<span>Span1</span>
<span>Span2</span>
<span>Span3</span>
... allora tutti e tre gli <span>elementi si sarebbero seduti uno accanto all'altro senza sovrapporsi.
Se imposto il secondo <span>per utilizzare il posizionamento relativo, in questo modo:
<span>Span1</span>
<span style="position: relative; left: -5px;">Span2</span>
<span>Span3</span>
... allora Span2 si sovrapporrebbe al lato destro di Span1 di 5px. Span1 e Span3 si posizionerebbero esattamente nello stesso punto del primo esempio, lasciando uno spazio di 5 px tra il lato destro di Span2 e il lato sinistro di Span3.
Spero che questo chiarisca un po 'le cose.