Come creare un div con auto-clear

Uno dei problemi che troviamo quando andiamo ad utilizzare degli elementi in Float è quello di avere successivamente il contenitore senza altezza predefinita e quindi avere un layout semi-spaccato.

Un esempio classico è un box con sfondo e al suo interno due elementi in float. Il box risulterà alto pochi pixel invece di racchiudere gli elementi al suo interno.

Per ovviare a questo problema una tecnica era quella di usare un <div>, o uno <span> o addirittura un <br /> con una classe che conteneva la regola:

clear: both;

Il risultato era ottimo, ma diciamoci la verità, il markup lo rovinava e ci trovavamo degli elementi in più che proprio ci stavano male.

Adesso (anche se in verità, da un bel po’) si può usare solo una classe CSS da assegnare al contenitore, che contenga queste regole:

.clear:after {
clear : both;
display : block;
content : “.”;
height : 0;
visibility : hidden;
}
.clear {display:inline-block;}
.clear {display:block;}
* html .clear {height: 1%;}

Ma che cosa fa?
Seplicemente indicano di aggiungere un carattere ‘.’ (il punto) alla fine dell’elemento, con altezza 0 pixel poi lo nasconde e cancella il float (clear: both).
Crea quindi via CSS quell’elemento in più che tanto dava noia prima al markup.
Le altre regole sono dei fix per i browser poco compatibili.

Di seguito un’esempio dell’html:

<div style=”background: #ccc” class=”clear”>
<div style=”float: left; padding: 5px”>
Sinistra
</div>
<div style=”float: right; padding: 5px”>
Destra
</div>
</div>

4 thoughts on “Come creare un div con auto-clear

  1. Pingback: Simone D’Amico » Blog Archive » CSS: come creare un div con auto-clear

  2. Gentilmente potreste spiegarmi come inserire la sezione commneti recenti.. (come sta qui da voi)come si inserisce nel template dilectio versione 2007..spero in una risposta grazie mille

  3. Domanda: la pseudolcasse “:after” come viene interpretata da IE?

    “display:inline-block;” inoltre non mi sembra una proprietà valida.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may 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>