{"id":121,"date":"2010-11-29T22:11:19","date_gmt":"2010-11-29T21:11:19","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/fondamenti-del-posizionamento-in-css\/"},"modified":"2010-11-29T22:11:19","modified_gmt":"2010-11-29T21:11:19","slug":"fondamenti-del-posizionamento-in-css","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/fondamenti-del-posizionamento-in-css\/","title":{"rendered":"Fondamenti del posizionamento in CSS"},"content":{"rendered":"<p><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/11\/n19anatresmall.png\" border=\"0\" align=\"right\" \/>Se siete un front-end developer o un designer a cui piace programmare, i layout basati su CSS sono il vostro pane quotidiano. In questo articolo, che per alcuni sar\u00e0 un semplice ripasso, mentre per altri potrebbe costituire il momento in cui tutto diventa chiaro, daremo un&#8217;occhiata alla propriet\u00e0 <code>position<\/code> di CSS per vedere come la si possa usare per creare dei layout CSS senza tabelle e compatibili con gli standard web.<\/p>\n<div class=\"paragrafo\">\n<h2>Il posizionamento \u00e8 tutto<\/h2>\n<p>Il posizionamento in CSS viene spesso frainteso: a volte, presi dalla furia del bug-fixing, si applicano diversi valori a <code>position<\/code> per un dato selettore finch\u00e9 non si ottiene il funzionamento desiderato. Tale processo \u00e8 tedioso e pu\u00f2 andar bene per in un certo momento, ma \u00e8 obbligatorio sapere <em>perch\u00e9<\/em> specificare qualcosa come <code>position: relative<\/code> riesca a sistemare il bug presente nel layout. Spero che riusciate ad imparare i valori e i comportamenti della propriet\u00e0 <code>position<\/code> e, cosa ancora pi\u00f9 importante, che effetto possa avere un dato valore sul vostro markup. La specifica CSS ci offre cinque propriet\u00e0 per <code>position<\/code>: <code>static<\/code>, <code>relative<\/code>, <code>absolute<\/code>, <code>fixed<\/code> ed <code>inherit<\/code>. Ciascuna di queste ha uno scopo specifico e comprenderli \u00e8 il segreto per padroneggiare i layout basati sui CSS.<\/p>\n<h3>Seguire il flusso<\/h3>\n<p>Per prima cosa, facciamo un passo indietro per capire in che mondo ci stiamo muovendo. Pi\u00f9 o meno come nel mondo reale, in CSS si lavora all&#8217;interno di confini, che in questo caso prendono il nome di <a href=\"http:\/\/www.w3.org\/TR\/CSS21\/visuren.html#normal-flow\">normal flow<\/a> [flusso normale, <em>ndr<\/em>]. Stando alla specifica CSS 2.1:<\/p>\n<blockquote>\n<p>I box nel flusso normale appartengono ad un contesto di formattazione, che pu\u00f2 essere block o inline, ma non entrambe simultaneamente. I box di tipo block prendono parte al contesto \u201cblock formatting\u201d. I box inline partecipano ad un contesto di formattazione inline.<\/p>\n<\/blockquote>\n<p>Pensate al \u201cbox\u201d descritto nella specifica come ad un cubetto di legno, simile a quelli con cui giocavate da piccoli. Ora, pensate al <em>flusso normale<\/em> come ad una legge simile alla legge di gravit\u00e0. Il flusso normale del documento descrive come gli elementi si impilano uno sull&#8217;altro, dall&#8217;alto verso il basso, nell&#8217;ordine in cui appaiono nel markup. Magari vi ricordate di quando impilavate dei cubetti con le lettere dell&#8217;alfabeto in torri altissime: il normal flow non \u00e8 diverso da quei cubetti soggetti alla legge di gravit\u00e0. Da bambini mettevate un blocco sopra l&#8217;altro: nel vostro markup avete un elemento dopo l&#8217;altro. Quello che da bambini tuttavia non potevate fare era dare delle propriet\u00e0 a quei blocchi in modo tale che sconfiggessero la legge di gravit\u00e0. Ed ecco che all&#8217;improvviso, CSS sembra molto pi\u00f9 interessante dei cubetti con le lettere dell&#8217;alfabeto!<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Static e relative: niente di nuovo qui<\/h2>\n<p>Le propriet\u00e0 <code>static<\/code> e <code>relative<\/code> di <code>position<\/code> si comportano come i blocchetti della vostra infanzia: si impilano come vi aspettereste che facciano. Si noti che <code>static<\/code> \u00e8 il valore di default di <code>position<\/code> per ogni elemento, nel caso vi dimentichiate di assegnargli un altro valore. Se avete tre elementi posizionati staticamente nel vostro codice, questi si posizioneranno uno sull&#8217;altro come vi aspettereste. Prendiamo un esempio con tre elementi, tutti con il valore di <code>position<\/code> impostato a <code>static<\/code>:<\/p>\n<pre><code> <br \/>#box_1 { <br \/>position: static;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #ee3e64;<br \/>}<br \/> <br \/>#box_2 { <br \/>position: static;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #44accf;<br \/>}<br \/> <br \/>#box_3 { <br \/>position: static;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #b7d84b;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>Nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_a.html\">esempio A<\/a>, potete vedere tre elementi impilati come una semplice torre. Affascinante, vero? Avete appena assistito a \u201cFondamenti di costruzioni coi blocchi\u201d. Complimenti!<\/p>\n<p>Potete usare il valore <code>static<\/code> per layout semplici, ad una colonna, nei quali ogni elemento sta sopra quello successivo. Se volete cominciare a spostare in giro quegli elementi usando le propriet\u00e0 offset come <code>top<\/code>, <code>right<\/code>, <code>bottom<\/code> e <code>left<\/code>, non avrete fortuna. Queste propriet\u00e0 non sono disponibili per un elemento <code>static<\/code>. In effetti, un elemento <code>static<\/code> non pu\u00f2 nemmeno creare un nuovo sistema di coordinate per gli elementi figlio. Un attimo. Cosa? Mi sono perso a <em>sistema di coordinate<\/em>. Ricevuto! Spieghiamo come usare il valore <code>relative<\/code>.<\/p>\n<p>Gli elementi posizionati in maniera relativa si comportano esattamente come quelli posizionati staticamente: giocano bene con gli altri, si impilano bene e non scatenano putiferi. Difficile da credersi, vero? Guardate l&#8217;esempio precedente. Questa volta applichiamo il valore <code>relative<\/code>:<\/p>\n<pre> <br \/><code> <br \/>#box_1 { <br \/>position: relative;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #ee3e64;<br \/>}<br \/> <br \/>#box_2 { <br \/>position: relative;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #44accf;<br \/>}<br \/> <br \/>#box_3 { <br \/>position: relative;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #b7d84b;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_b.html\">esempio B<\/a> prova che gli elementi posizionati relativamente si comportano esattamente allo stesso modo di quelli posizionati staticamente. Quello che potreste non sapere \u00e8 che gli elementi con un valore di posizionamento <code>relative<\/code> sono come <a href=\"http:\/\/it.wikipedia.org\/wiki\/Clark_Kent\">Clark Kent<\/a>: nascondono poteri molto pi\u00f9 grandi rispetto ai loro fratelli statici.<\/p>\n<p>Per cominciare, possiamo sistemare gli elementi posizionati relativamente con le propriet\u00e0 offset: <code>top<\/code>, <code>right<\/code>, <code>bottom<\/code> e <code>left<\/code>. Usando il markup dell&#8217;esempio precedente, aggiungiamo una posizione offset a <code>#box_2<\/code>:<\/p>\n<pre> <br \/><code> <br \/>#box_2 { <br \/>position: relative;<br \/>left: 200px;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #44accf;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_c.html\">esempio C<\/a> mostra tale posizionamento relativo in azione. I nostri tre blocchi si impilano correttamente, ma questa volta il blocco blu (<code>#box_2<\/code>) \u00e8 spostato di 200 pixel a partire da sinistra. Qui \u00e8 dove cominciamo a piegare la legge di gravit\u00e0 alla nostra volont\u00e0. Il blocco blu \u00e8 ancora nel flusso del documento, gli elementi si impilano uno sull&#8217;altro ma notate il blocco verde (<code>#box_3<\/code>) in fondo: sta sotto al blocco blu nonostante il blocco blu non sia direttamente sopra questo. Quando usate la propriet\u00e0 offset per spostare un elemento posizionato relativamente, questo non influisce sull&#8217;elemento o sugli elementi che seguono. Il blocco verde \u00e8 ancora posizionato come se il blocco blu fosse nella sua posizione non-offset. Provate a farlo con la torre di blocchi di legno dell&#8217;alfabeto!<\/p>\n<p>Creare un sistema di coordinate per gli elementi figlio \u00e8 un altro super-potere della propriet\u00e0 di posizionamento relativo. Un sistema di coordinate \u00e8 un punto di riferimento per le propriet\u00e0 offset. Ricordate come nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_c.html\">esempio C<\/a> il nostro blocco blu (<code>#box_2<\/code>) non si porta all&#8217;interno di alcun altro elemento, in questo modo il sistema di coordinate utilizzato per spostarsi di 200 pixel a sinista \u00e8 relativo al documento stesso. Se piazziamo l&#8217;elemento <code>#box_2 <\/code> all&#8217;interno di<code>#box_1<\/code>, otterremo un risultato differente, poich\u00e9 <code>#box_2<\/code> si posizioner\u00e0 <em>relativamente<\/em> al sistema di coordinate di <code>#box_1<\/code>. Per il prossimo esempio, non cambier\u00f2 alcunch\u00e9 all&#8217;interno del CSS, modificheremo solo il nostro HTML per spostare <code>#box_2<\/code> all&#8217;interno di <code>#box_1<\/code>:<\/p>\n<pre> <br \/><code> <br \/>&lt;div id=\"box_1\"&gt;<br \/>   &lt;div id=\"box_2\"&gt;&lt;\/div&gt;<br \/>&lt;\/div&gt;<br \/><\/code> <br \/><\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_d.html\">esempio D<\/a> mostra il nostro nuovo markup. A causa del nuovo sistema di coordinate, il blocco blu misura il suo offset di 200 pixel dalla sinistra del blocco rosso (<code>#box_1<\/code>) invece che dal documento. Questa pratica \u00e8 pi\u00f9 comune con gli elementi impostati a <code>position: absolute<\/code>: il modo in cui avreste voluto costruire le vostre torri da bambini.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Absolute: sempre e ovunque<\/h2>\n<p>Se il valore <code>relative<\/code> si comporta come <a href=\"http:\/\/it.wikipedia.org\/wiki\/Superman\">Superman<\/a>, allora il valore <code>absolute<\/code> rispecchia <cite><a href=\"http:\/\/it.wikipedia.org\/wiki\/Inception\">Inception<\/a><\/cite>: un posto in cui create il vostro mondo. A differenza dei valori <code>static<\/code> e <code>relative<\/code>, un elemento posizionato assolutamente viene rimosso dal flusso normale. Significa che lo potete mettere ovunque e non <em>influenzer\u00e0 n\u00e9 sar\u00e0 influenzato<\/em> da nessun altro elemento nel flusso. Pensatelo come un elemento con una gigantesca striscia di velcro sul retro: ditegli dove deve attaccarsi e si attaccher\u00e0. Esattamente come un valore <code>relative<\/code>, gli elementi posizionati assolutamente rispondono alle propriet\u00e0 di offset per il posizionamento. Potete settare un elemento a <code>top: 100px<\/code> e <code>left: 200px;<\/code> e quell&#8217;elemento si piazzer\u00e0 esattamente a 100 pixel dal top e a 200 pixel dalla sinistra del documento. Prendiamo ora un esempio con quattro elementi:<\/p>\n<pre> <br \/><code> <br \/>#box_1 { <br \/>position: absolute;<br \/>top: 0;<br \/>left: 0;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #ee3e64;<br \/>}<br \/>#box_2 { <br \/>position: absolute;<br \/>top: 0;<br \/>right: 0;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #44accf;<br \/>}<br \/>#box_3 { <br \/>position: absolute;<br \/>bottom: 0;<br \/>left: 0;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #b7d84b;<br \/>}<br \/>#box_4 { <br \/>position: absolute;<br \/>bottom: 0;<br \/>right: 0;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #ebde52;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_e.html\">esempio E<\/a> mostra quattro blocchi, ciascuno in un angolo della finestra del browser. Dal momento che abbiamo impostato la <code>position<\/code> di ciascun box al valore <code>absolute<\/code>, abbiamo essenzialmente attaccato con il velcro ogni box ad un angolo della finestra del browser. Ridimensionando la finestra del browser, questi blocchi rimarranno nei rispettivi angoli. Se rimpicciolite la finestra del browser fino a che i blocchi si sovrappongono, noterete che non vi \u00e8 alcun tipo di interazione perch\u00e9 sono fuori dal flusso normale del documento.<\/p>\n<p>Proprio come gli elementi <code>relative<\/code>, gli elementi <code>absolute<\/code> creano un nuovo sistema di coordinate per gli elementi figlio. L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_f.html\">esempio F<\/a> estende l&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_e.html\">esempio E<\/a>, con un elemento arancio messo in ciascun blocco. Notate come le coordinate di offset siano prese rispetto ad ogni elemento padre.<\/p>\n<p>Per non essere da meno rispetto ad altri valori della propriet\u00e0 <code>position<\/code>, il valore <code>absolute<\/code> offre alcune funzionalit\u00e0 davvero forti con le propriet\u00e0 di offset. Usate due delle quattro propriet\u00e0 di <code>offset<\/code> e potrete allargare un elemento senza definirne una larghezza o un&#8217;altezza: sar\u00e0 vincolato solo dall&#8217;elemento padre o dal documento stesso. Vediamolo in azione. Considerate il codice seguente:<\/p>\n<pre> <br \/><code> <br \/>#box_a { <br \/>position: absolute; <br \/>top: 10px;<br \/>right: 10px;<br \/>bottom: 10px;<br \/>left: 10px; <br \/>background: red; <br \/>}<br \/>#box_b { <br \/>position: absolute; <br \/>top: 20px;<br \/>right: 20px; <br \/>bottom: 20px; <br \/>left: 20px; <br \/>background: white;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>Nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_g.html\">esempio G<\/a> abbiamo creato un border tramite offset di 10 pixel a partire dal documento ed \u00e8 interamente fluido al variare delle dimensioni del documento. Tutto fatto con il posizionamento assoluto e gli offset. In un altro esempio, possiamo creare un layout a due colonne che riempie l&#8217;intera altezza del documento. Ecco il CSS:<\/p>\n<pre> <br \/><code> <br \/>#box_1 { <br \/>position: absolute;<br \/>top: 0;<br \/>right: 20%; <br \/>bottom: 0;<br \/>left: 0;<br \/>background: #ee3e64;<br \/>}<br \/> <br \/>#box_2 { <br \/>position: absolute; <br \/>top: 0; <br \/>right: 0; <br \/>bottom: 0; <br \/>left: 80%; <br \/>background: #b7d84b;<br \/>}<br \/><\/code> <br \/><\/pre>\n<p>Nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_h2.html\">esempio H2<\/a> concentriamoci sul blocco blu (<code>#box_2<\/code>). Notate come uso solo un offset, <code>left: 100px;<\/code>. Questo permette all&#8217;elemento <code>#box_2<\/code> di mantenere il suo margine superiore e spostarsi ancora di 100 pixel da sinistra. Se applichiamo un secondo offset dall&#8217;alto, vedremmo il nostro blocco blu (<code>#box_2<\/code>) tirato verso il top del documento. Potete vederlo qui, nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_h3.html\">esempio H3<\/a>:<\/p>\n<pre> <br \/><code> <br \/>#box_2 { <br \/>position: absolute;<br \/>top: 0;<br \/>left: 100px;<br \/>width: 200px;<br \/>height: 200px;<br \/>background: #44accf;<br \/>}<br \/><\/code> <br \/><\/pre>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Fixed: sempre l\u00ec<\/h2>\n<p>Un elemento con <code>position: fixed<\/code> condivide tutte le regole di un elemento posizionato in modo assoluto, ad eccezione della viewport (la finestra del browser o del device) che risulta essere il riferimento per l&#8217;elemento <code>fixed<\/code>, a differenza di quanto avviene in qualunque elemento padre. Inoltre, un elemento <code>fixed<\/code> non segue lo scrolling del documento, ma rimane&#8230;fisso. Guardiamo questo esempio:<\/p>\n<pre> <br \/><code> <br \/>#box_2 {<br \/>position: fixed; <br \/>bottom: 0; <br \/>left: 0; <br \/>right: 0; <br \/>}<br \/><\/code> <br \/><\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_i.html\">esempio I<\/a> mostra un footer con del testo di copyright come elemento <code>fixed<\/code>. Mentre fate lo scroll della pagina, noterete che non si muove. Notate che le propriet\u00e0 di offset <code>left<\/code> e <code>right<\/code> sono impostate a zero. Dal momento che il valore di <code>fixed<\/code> si comporta in maniera simile al valore <code>absolute<\/code>, possiamo stirare la larghezza dell&#8217;elemento perch\u00e9 abbia la stessa dimensione della viewport mentre fissiamo l&#8217;elemento in fondo usando <code>bottom: 0;<\/code>. Siate prudenti con l&#8217;utilizzo del valore <code>fixed<\/code> di <code>position<\/code>: il supporto nei browser pi\u00f9 vecchi \u00e8, nel migliore dei casi, irregolare. Ad esempio, le versioni pi\u00f9 vecchie di Internet Explorer rendono gli elementi <code>fixed<\/code> come elementi <code>static<\/code>. E adesso sapete che gli elementi <code>static<\/code> non si comportano come gli elementi <code>fixed<\/code>, giusto? Se pianificate di usare elementi <code>fixed<\/code> in un layout, ci sono <a href=\"http:\/\/tagsoup.com\/cookbook\/css\/fixed\/\">molte soluzioni<\/a> che fanno in modo che il vostro elemento si comporti in maniera corretta nei browser che non supportano il valore <code>fixed<\/code>.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Inherit: qualcosa per niente<\/h2>\n<p>Come ho detto all&#8217;inizio di questo articolo, ci sono cinque valori possibili per la propriet\u00e0 <code>position<\/code>. Il quinto valore \u00e8 <code>inherit<\/code>. Funziona come suggerisce il suo nome: l&#8217;elemento eredita il valore del suo elemento padre. Tipicamente, gli elementi con la propriet\u00e0 <code>position<\/code> non ereditano naturalmente il valore del loro padre: il valore <code>static<\/code> viene assegnato nel caso in cui non ci sia alcun valore per <code>position<\/code>. Fondamentalmente, potete usare <code>inherit<\/code> o il valore dell&#8217;elemento padre per ottenere il medesimo risultato.<\/p>\n<h3>In azione<\/h3>\n<p>Tante chiacchiere e niente azione. Consideriamo un vero sito web che usa tutti i valori di position. L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/css-positioning-101\/example_j.html\">esempio J<\/a> mostra un tipico layout di sito con un header, un menu di navigazione, del contenuto ed un footer. Passiamo in rassegna ciascun elemento e discutiamone la propriet\u00e0 <code>position<\/code> e perch\u00e9 abbiamo scelto quella propriet\u00e0.<\/p>\n<p>Cominciamo dall&#8217;elemento <code>#container<\/code>. Si tratta semplicemente dell&#8217;elemento che contiene tutto, che io uso per posizionare al centro il contenuto all&#8217;interno della viewport. L&#8217;elemento <code>#nav<\/code> \u00e8 il primo elemento all&#8217;interno dell&#8217;elemento <code>#container<\/code>. Nessuna propriet\u00e0 <code>position<\/code> \u00e8 assegnata all&#8217;elemento <code>#nav<\/code>, cos\u00ec di default \u00e8 impostata a <code>static<\/code>. Va bene cos\u00ec: non abbiamo bisogno di fare nulla per spostare questo elemento o per creare un nuovo sistema di coordinate. Avremo bisogno di farlo con <code>#content<\/code> nel nostro prossimo elemento, cos\u00ec che per quell&#8217;elemento avremo applicato una propriet\u00e0 <code>position<\/code> impostata a <code>relative<\/code>.<\/p>\n<p>Dal momento che non stiamo usando alcun offset qui, il valore di <code>position<\/code> non ha davvero alcuna influenza sull&#8217;elemento <code>#content<\/code>, ma lo abbiamo messo l\u00ec per creare un nuovo sistema di coordinate per l&#8217;elemento <code>#callout<\/code>. Il nostro elemento <code>#callout<\/code> \u00e8 impostato a <code>position: absolute<\/code> e dal momento che \u00e8 l&#8217;elemento padre, <code>#content<\/code> \u00e8 settato a <code>relative<\/code>, le propriet\u00e0 di offset che stiamo usando su <code>#callout<\/code> si basano sull&#8217;elemento padre che lo contiene. Inoltre, ho usato una delle feature pi\u00f9 cool del valore <code>absolute<\/code> sul nostro elemento <code>#callout<\/code>: impostando gli offset top e bottom a 100px ho stirato l&#8217;elemento <code>#callout<\/code> all&#8217;altezza intera del documento meno 100px di offset al top e al bottom.<\/p>\n<p>Dal momento che l&#8217;elemento <code>#callout<\/code> ha un valore <code>absolute<\/code>, non influisce sugli altri elementi. Pertanto, abbiamo bisogno di aggiungere del padding all&#8217;elemento <code>#content<\/code> per fare in modo che i paragrafi non scompaiano sotto a questo. Impostare il padding sulla destra di <code>#content<\/code> a 250px fa rimanere il contenuto completamente visibile agli utenti. Per portare in primo piano ci\u00f2 che \u00e8 in secondo piano, abbiamo aggiunto un footer con una posizione <code>fixed<\/code> per farlo restare fissato al bordo inferiore della pagina. Mentre facciamo lo scroll della pagina, il footer rimane al suo posto. Cos\u00ec come abbiamo aggiunto il padding al <code>#content<\/code> per evitare che i paragrafi sparissero sotto ad esso, abbiamo bisogno di fare lo stesso per l&#8217;elemento <code>#footer<\/code> perch\u00e9 \u00e8 un fratello del valore <code>absolute<\/code>. Aggiungere 60px al padding-bottom dell&#8217;elemento <code>#content<\/code> assicura che si possa far scorrere l&#8217;intero documento senza perdere alcuna riga di testo che sarebbe normalmente nascosto sotto l&#8217;elemento <code>#footer<\/code>.<\/p>\n<p>Ora abbiamo un semplice e grazioso layout con navigazione, contenuto, un&#8217;area callout ed un footer che utilizza gli elementi <code>static<\/code>,  <code>relative<\/code>, <code>absolute<\/code> e <code>fixed<\/code>. Dal momento che stiamo usando il valore <code>fixed<\/code> in questo layout, dovremmo applicare <a href=\"http:\/\/tagsoup.com\/cookbook\/css\/fixed\/\">alcune tecniche<\/a> per assicurarsi che i vecchi browser rispettino comunque il nostro design.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Conclusioni<\/h2>\n<p>Con il potere della propriet\u00e0 <code>position<\/code> potete realizzare con successo molti layout. Grazie al cielo l&#8217;80% dei valori della propriet\u00e0 <code>position<\/code> hanno un supporto eccellente sia nei nuovi che nei vecchi browser. C&#8217;\u00e8 per\u00f2 da stare attenti al valore <code>fixed<\/code>. Comprendere il nocciolo di questi valori di <code>property<\/code> vi d\u00e0 degli elementi fondamentali e solide basi per creare layout basati sui CSS, limitati solo dalla vostra fantasia. Si spera che adesso i giorni in cui tiravate ad indovinare i valori di position nella frenesia del bug fixing dell&#8217;ultimo minuto siano finiti.<\/p>\n<p>\u00a0<\/p>\n<p>Illustrazioni: {carlok}<\/p>\n<\/div>\n<p>Traduzioni:<br \/> <a href=\"http:\/\/www.clearboth.org\/wiki\/doku.php?id=ala:css-positioning-101\">Coreano<\/a><br \/> <a href=\"http:\/\/www.webinside.com.pl\/2010\/11\/css-positioning-101\/\">Polacco<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se siete un front-end developer o un designer a cui piace programmare, i layout basati sui CSS sono il fulcro del vostro lavoro. Il designer\/developer Noah Stokes esamina attentamente la propriet\u00e0 codeposition\/code di CSS per mostrarvi come pu\u00f2 essere usata per creare dei layout standard-compliant e senza tabelle mediante i CSS. Mettete alla prova la vostra conoscenza o ripassate il posizionamento statico, relativo, assoluto, fisso ed inherited e come funzionano quando usati insieme per creare qualsiasi layout web che la mente umana possa concepire.<\/p>\n","protected":false},"author":818,"featured_media":7000598,"comment_status":"open","ping_status":"open","template":"","categories":[244,247,272,33],"tags":[],"coauthors":[315],"class_list":["post-121","article","type-article","status-publish","has-post-thumbnail","hentry","category-css","category-html","category-layout-and-grids","category-numero-19-30-novembre-2010"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/users\/818"}],"replies":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/comments?post=121"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000598"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=121"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}