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 bottom
attributi.
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 inner
div sarebbe posizionato a 20px dalla parte superiore del outer
div e 20px dal bordo sinistro dello stesso, perché il outer
div non è posizionato con position:static
perché 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 bottom
attributi "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.