CSS POSITION: posizione d’un elemento in modo statico, assoluto, relativo e fisso

Wednesday 09 July 08 by Onsitus in CSS Proprietà

La proprietà css position con i suoi valori static, absolute, relative e fixed permette di posizionare un elemento in relazione ad un altro elemento o allo corpo stesso della pagina.

Con l’uso di semplici esempi online, vederemo la proprietà CSS position, l’applicazione di questi 4 differenti valori con l’uso delle declarazione top (alto), bottom (basso), left (sinistra) e right (destra) per posizionare più precisamente l’elemento con unità di misure o percentuale.

Per iniziare, vediamo quale sarebbe il flusso normale della pagina con l’uso di 3 div a bordi colorati:

  • uno giallo (’yellow’)
  • uno rosso (’red’) a quale, di seguito, impostiamo le diverse valore della proprietà position
  • uno nero (’black’) che servirà di div ‘contenitore’ a ‘red’

L’HTML e CSS di base:

<div style="width:300px; height: 100px; border: 1px solid yellow;"></div>
<div style="width:300px; height: 300px; border: 1px solid black;"><div style="width:200px; height: 200px; border: 1px solid red;"></div></div>

Il risultato:

1. position: static;

Il valore static (statico) è il valore di default e sarebbe uguale alla posizione dell’elemento nell’esempio del flusso normale.

L’elemento ’statico’ non può essere mosso della sua posizione e ignora le declarazione top, bottom, left e right.

2. position: absolute;

Il valore absolute (assoluto) permette di rimuovere l’elemento dello flusso normale della pagina per potere posizionarlo con le declarazione top, bottom, left e right in unità di misura.

L’elemento assoluto è posizionato in rapporto al suo div ‘contenitore’ solo se lui stesso ha la sua proprietà position impostato con un valore altro che ’static’.

Se no, l’elemento in posizione assoluta si posiziona in base a l’elemento HTML (normalemente, l’area visiva della finestra del browser) sempre in alto a sinistra.

Esempio 1 position absolute:

‘red’ con position: absolute; top: 0; right: 50px; contenuto in ‘black’ senza posizione specificata.

position:absolute; top:0; right:50px;

L’elemento ‘red’ è tolto del flusso naturale e si posiziona in alto a 50px a destra in base alla finestra del browser. (guardate in alto a destra di questa pagina)

Il risultato sarebbe lo stesso se div ‘red’ non era contenuto in div ‘black’, visto che non abbiamo specificato una posizione a ‘black’ chi per default ha sua posizione ’static’.

Esempio 2 position absolute:

‘red’ con position: absolute; top: 50px; left: 10px; contenuto in ‘black’ con position: relative;.

position:absolute; top:50px; left:10px;

position:relative;

Questa volta, l’elemento ‘red’ si posiziona a 50px in alto e 10px a sinistra in base al suo div contenitore ‘black’ visto che, per questo esempio, abbiamo specificato una posizione relative a ‘black’.

Esempio 3 position absolute:

Lo stesso che esempio 2 ma invece di top: 50px; left: 10px;, usiamo bottom: 20px; right: 10px;.

position:absolute; bottom:20px; right:10px;

position:relative;

L’elemento ‘red’ si posiziona a 20 px in basso e 10px a destra in base al suo contenitore.

3. position: relative;

Il valore relative (relativo) permette di posizionare l’elemento in base al suo div ‘contenitore’.

Contrariamente alla posizione assoluta, le declarazione top, bottom, left e right non rappresentano punti fissi di posizionamento ma sono basate sulla posizione naturale dell’elemento.

Esempio 1 position relative:

‘red’ con position: relative; top: 20px; left: 20px; contenuto in ‘black’.

position:relative; top:20px; left:20px;

L’elemento ‘red’ si sposta verso il basso a sinistra aggiungendo 20px alla posizione iniziale delle sue parte superiore e sinistra.

Esempio 2 position relative:

Lo stesso che esempio 1 ma invece di top: 20px;, usiamo bottom: 20px; right: 20px;.

position:relative; bottom:20px; right:20px;

L’elemento ‘red’ si sposta verso l’alto aggiungendo 20px alla posizione iniziale della sua parte inferiore e verso la sinistra aggiungendo 20px alla posizione iniziale della sua parte destra.

4. position: fixed;

NB: NON SUPPORTATO DA INTERNET EXPLORER 6 E INFERIORE. Per IE7, usare il doctype corretto.

Come per la posizione assoluta, il valore fixed (fisso) permette di rimuovere l’elemento del flusso normale della pagina per potere posizionarlo con le declarazione top, bottom, left e right.

La differenza tra di loro è che l’elemento fisso si posiziona sempre in base a l’elemento HTML (l’area visiva della finestra del browser) in alto a sinistra e mai ad un suo eventuale elemento ‘contenitore’.

Essendo fisso, questo elemento rimanerà sempre alla sua posizione anche se il resto della pagina è scorrevole.

Un elemento ‘fixed’ può essere riposizionato usando top, bottom, left, right (come per ‘absolute’) ricordandosi che sarà sempre in relazione alla finestra browser.

Esempio 1 position fixed:

‘red’ con position: fixed; top: 20px; left: 0; contenuto in ‘black’.

position:fixed;top:20px;left:0;

L’elemento ‘red’ è tolto del flusso naturale della pagina e si posiziona a 20px in alto a sinistra in base alla finestra del browser.
Il risultato sarebbe lo stesso se div ‘red’ non era contenuto in div
‘black’, visto che è sempre posizionato in base alle misure della finestra del browser.

Esempio 2 position fixed:

Per questo secondo esempio, tolgo ‘red’ con position: fixed; bottom: 0; left: 0; del suo div contenitore ‘black’.

L’HTML e CSS usato:

<div style="width:300px;height:100px;border:1px solid yellow;"></div>
<div style="width:300px;height: 300px;border: 1px solid black;"></div>
<div style="width:200px; height: 200px; border: 1px solid red; position:fixed; bottom:0; left:0;">position:fixed;bottom:0;right:0;</div>

Il risultato:

position:fixed;bottom:0;right:0;

L’elemento ‘red’ è tolto del flusso naturale della pagina e si posiziona in basso a sinistra in base alla finestra del browser e rimane in una posizione fissa anche quando il resto del corpo della pagine è ’scrollata’.

This article in english >>

22 commenti

Rimani aggiornato con il RSS Feed

{ 15 trackbacks }

Introduzione al box model – CSS e CSS3 blog con tutorials e risorse per css3 e css
09.30.08 at 11:06
Immagine mappata in css – CSS e CSS3 blog con tutorials e risorse per css3 e css
11.03.08 at 15:54
Css Mappa d’Italia - esempio css 8 – CSS e CSS3 blog con tutorials e risorse per css3 e css
11.05.08 at 08:20
Box model - 2 colonne - 1 colonna fissa / 1 colonna fluida – CSS e CSS3 blog con tutorials e risorse per css3 e css
11.07.08 at 11:54
Effetto zoom su dettaglio di un immagine in css
01.06.09 at 16:52
Css galleria immagini
01.07.09 at 11:57
Effetti di testo tipo Photoshop in css
02.02.09 at 13:01
Css tips - Immagine di sfondo al 100%
02.04.09 at 11:25
How to create a basic css horizontal drop down menu
02.05.09 at 09:59
Introduction to the box model
02.27.09 at 09:48
How to create a basic css horizontal drop down menu | Vectormesh
04.06.09 at 19:56
Image map in css
04.17.09 at 08:41
Come usare il css per la posizione di un elemento in una pagina Hmtl | Pecciola
07.31.09 at 03:50
Come creare un menu css drop down verticale di base
01.10.10 at 15:07
CSS POSITION: posizione d’un elemento in modo statico, assoluto, relativo e fisso « Pausa Cafè
02.15.10 at 15:04

{ 7 comments… read them below or add one }

Francesco 04.23.09 at 16:03

Ciao non riesco a capire dove sbaglio ecco il codice:

position:fixed;bottom:0;right:0;

Francesco 04.23.09 at 16:05

vabbè non va ecco il link http://www.sampy.it/fra.html

Onsitus 04.23.09 at 17:14

Ciao Francesco,
il problema è dovuto al copia/incolla del codice di questa pagina.
I ” ” tra le regole css sono stati ‘modificati’ e quando lo inserisci come tale dentro una pagina html tua, non piu vengono riconosciuti.
Correggo il problema e riprova di nuovo!

Onsitus 04.23.09 at 17:18

Sistemato. Se fai di nuovo il copia/incolla, non dovrebbe esserci più il problema.

christian 12.09.09 at 19:46

grazie di qs tutorial. mi ha risolto un grosso problema.

c'è un errore nell'ultimo esempio 12.23.09 at 12:24

c’è un errore nell’ultimo esempio, qui:

L’HTML e CSS usato:

&lt:/div>

position:fixed;bottom:0;right:0;

nell’ultim riga, tra le parentesi uncinate, c’è un left al posto di right.

Onsitus 01.10.10 at 13:30

Fatto! Grazie ^_^

Scrivi un commento

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous post: CSS3 opacity: trasparenza d’un elemento in css3

Next post: Come creare 3 stati d’un pulsante con un unica immagine in css