2011-09-07 11 views
5
<style> 
.cl {clear:both;} 
.block {} 
.left {float:left;} 
</style> 

<div class="block"> 
    <div class="left">Title 1</div> 
    <div class="left">Value 1</div> 
    <div class="cl"></div> 
</div> 
<div class="block"> 
    <div class="left">Title 2</div> 
    <div class="left">Value 2</div> 
    <div class="cl"></div> 
</div> 

È possibile evitare di aggiungere <div class="cl"></div> alla fine di ogni .block?Come cancellare: entrambi; correttamente?

+0

Hai provato a usare qualcosa di simile a '.block: dopo {clear: both} '? Non ho mai provato a utilizzare i selettori prima o dopo, quindi non so come funzionano. – animuson

risposta

0

Provare a utilizzare overflow:hidden su .block So che a volte lo risolverò.

1

Si potrebbe fare questo:

<style> 
    br {clear:both;} 
</style> 
<div class="block"> 
    <div class="left">Title 2</div> 
    <div class="left">Value 2</div> 
</div> 
<br/> 

un'opzione secondo re: @animuson commento

<style> 
    .container br {clear:both;} 
</style> 
<div class="container"> 
    <div class="block"> 
     <div class="left">Title 2</div> 
     <div class="left">Value 2</div> 
    </div> 
    <br/> 
</div> 
+1

Dovresti davvero usare un nome di classe per l'interruzione, quindi non si applica alle * tutte * interruzioni nel tuo documento. Ma se lo fai, non è affatto diverso dall'esempio dell'OP. – animuson

+0

sì, ecco perché l'ho fatto a livello di elemento – Eonasdan

5

Ci sono due comuni soluzioni a questo problema.

  1. Aggiungere overflow: hidden al genitore degli elementi mobili (quindi in questo caso, .block).
  2. Usa "clearfix": http://nicolasgallagher.com/micro-clearfix-hack/

Alcuni maggiori informazioni qui: Is clearfix deprecated?


Un buon momento per usare clear: both è quando si già hanno un elemento a disposizione per aggiungerla.

Per esempio, il caso comune di colonne galleggiavano con un piè di pagina: http://jsfiddle.net/thirtydot/vhBkM/

+0

+1: Usa "overflow: hidden' per forzare i float a rimanere all'interno di un elemento di blocco. 'clear' è lo strumento sbagliato per il lavoro. –

+0

@ Søren Løvborg perché 'chiaro' sbagliato per il lavoro? vera domanda per l'esperienza di apprendimento. – Eonasdan

+0

@Eonasdan: Funziona, ma ci sono alternative più pulite. 'overflow: hidden' implica l'aggiunta di solo ..' overflow: hidden' al CSS, che è più pulito dell'aggiunta di un elemento extra nell'HTML al solo scopo di cancellare i float. Mentre clearfix comporta l'aggiunta di una classe extra nell'HTML, che è anche più pulita dell'aggiunta di un elemento extra. – thirtydot

1

non dovrebbe essere necessario i <div class="cl"></div> div a tutti. Basta mettere il clear: both sul blocco div.

Esempio: http://jsfiddle.net/mKazr/

CSS

.block { 
    clear: both; 
    overflow: hidden; /* If you want to make the div size to the contents and not collapse use this line (from thirtydot answer) */ 
} 
.left { float:left; } 

HTML

<div class="block"> 
    <div class="left">Title 1</div> 
    <div class="left">Value 1</div> 
</div> 
<div class="block"> 
    <div class="left">Title 2</div> 
    <div class="left">Value 2</div> 
</div> 

Edit: aggiunto il codice

+0

Anche questo è stato il mio pensiero iniziale. Non testato però. – diggersworld