Utilizzo: dopo per cancellare gli elementi fluttuanti


106

Ho una lista e i li hanno un file float:left;. Il contenuto dopo il <ul>dovrebbe essere allineato correttamente. Quindi posso costruire quanto segue:

http://jsfiddle.net/8unU8/

Ho pensato, che posso rimuovere <div class="clear">usando pseudo selettori come: after.

Ma l'esempio non funziona:

http://jsfiddle.net/EyNnk/

Devo sempre creare un div separato per cancellare gli elementi mobili?

Risposte:


261

Scrivi così:

.wrapper:after {
    content: '';
    display: block;
    clear: both;
}

Controlla questo http://jsfiddle.net/EyNnk/1/


Così è come si fa. ma per favore nota il punto nella mia risposta sulla semantica.
Alex

2
Solo una piccola informazione: ::aftercon i due punti doppi è il modo consigliato di prendere di mira gli pseudo-elementi.
Dennis98

11
Ogni browser che supporta i due punti doppi (: :) La sintassi CSS3 supporta anche solo la sintassi (:), ma IE 8 supporta solo i due punti singoli, quindi per ora si consiglia di utilizzare solo i due punti per il miglior supporto del browser. :: è il formato più recente rientrato per distinguere il contenuto pseudo da pseudo selettori. Se non hai bisogno del supporto di IE 8, sentiti libero di usare i due punti doppi. css-tricks.com/almanac/selectors/a/after-and-before
retroriff

perché dovremmo mettere questo: "content: ''; display: block;" ? e se volessi un wrapper in linea?
Lucke

6

No, non è sufficiente fare qualcosa del genere:

<ul class="clearfix">
  <li>one</li>
  <li>two></li>
</ul>

E il seguente CSS:

ul li {float: left;}


.clearfix:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}

.clearfix {
  display: inline-block;
}

html[xmlns] .clearfix {
   display: block;
}

* html .clearfix {
   height: 1%;
}

5

Funzionerà anche:

.clearfix:before,
.clearfix:after {
    content: "";
    display: table;
} 

.clearfix:after {
    clear: both;
}

/* IE 6 & 7 */
.clearfix {
    zoom: 1;
}

Dare la classe clearfixal genitore elemento, ad esempio ilul elemento.

Fonti qui e qui .


1
display: la tabella può aggiungere una spaziatura extra; Uso display: block invece
The Cog

0

Il testo "dasda" non sarà mai fuori da un tag, giusto? Semanticamente e per essere un HTML valido, basta aggiungere la classe clear a quello:

http://jsfiddle.net/EyNnk/2/


1
Non è affatto semantica. 1) Chiariamo sempre l'elemento genitore se suo figlio è fluttuante su di esso, ad esempio secondo la tua risposta se voglio dare uno sfondo all'UL non copre gli LI perché UL non è chiaro e 2) Ho una domanda Perché dai chiaro Classe in un DIV separato prima di P. se dai a P solo è anche un lavoro
sandeep

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.