2010-03-10 42 views
39

Ho bisogno di allineare due div uno accanto all'altro, in modo che ciascuno contiene un titolo e un elenco di elementi, simile a:Come allineare due div orizzontalmente?

<div> 
    <span>source list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 

<div> 
    <span>destination list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 

E 'straordinariamente facile da fare con le tabelle, ma io non voglio usa le tabelle. Come posso raggiungere questo obiettivo?

risposta

45

Float div in un contenitore padre, e lo stile in questo modo:

.aParent div { 
 
    float: left; 
 
    clear: none; 
 
}
<div class="aParent"> 
 
    <div> 
 
     <span>source list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 
    <div> 
 
     <span>destination list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 
</div>

+0

Se si dà un elemento un galleggiante, è ridondante al meglio per dare anche un 'chiaro: none'. –

+0

Questo è stato risolto quando alcuni browser meno recenti non hanno sempre applicato il comando 'clear: none' con float. – Robusto

2

entrambi avvolgerli in un contenitore in questo modo:

.container{ 
 
    float:left; 
 
    width:100%; 
 
} 
 
.container div{ 
 
    float:left; 
 
}
<div class='container'> 
 
    <div> 
 
     <span>source list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 
    <div> 
 
     <span>destination list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 
</div>

+0

Il contenitore stesso non deve essere flottato. –

-1
<html> 
<head> 
<style type="text/css"> 
#floatingDivs{float:left;} 
</style> 
</head> 

<body> 
<div id="floatingDivs"> 
    <span>source list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 

<div id="floatingDivs"> 
    <span>destination list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 

</body> 
</html> 
+0

Un id può essere utilizzato solo una volta. –

15
<div> 
<div style="float:left;width:45%;" > 
    <span>source list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 

<div style="float:right;width:45%;"> 
    <span>destination list</span> 
    <select size="10"> 
     <option /> 
     <option /> 
     <option /> 
    </select> 
</div> 
<div style="clear:both; font-size:1px;"></div> 
</div> 

sereno deve essere utilizzato in modo da impedire l'insetto galleggiante (altezza deformazione di Div esterno).

style="clear:both; font-size:1px; 
+1

Cosa fa il div annidato finale? Perché 'chiaro: entrambi? perché 'font-size: 1px'? – Cheeso

+2

Per cancellare i galleggianti. Credo che "font-size: 1px" sia una cosa compatibile con IE. Potrei sbagliarmi. –

1

aggiungere una classe a ciascuno dei div:

.source, .destination { 
 
    float: left; 
 
    width: 48%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.source { 
 
    margin-right: 4%; 
 
}
<div class="source"> 
 
    <span>source list</span> 
 
    <select size="10"> 
 
     <option /> 
 
     <option /> 
 
     <option /> 
 
    </select> 
 
</div> 
 
<div class="destination"> 
 
    <span>destination list</span> 
 
    <select size="10"> 
 
     <option /> 
 
     <option /> 
 
     <option /> 
 
    </select> 
 
</div>

Questa è una soluzione di percentuali generica - con larghezze pixel-based è di solito molto più affidabile. Probabilmente vorrai cambiare anche le varie dimensioni di margine/riempimento.

Opzionalmente si può anche avvolgere il codice HTML in un div contenitore e utilizzare questo CSS:

.container { 
    overflow: hidden; 
} 

Questo assicurerà contenuto successivo non avvolgere intorno agli elementi mobili.

-1

per il vostro scopo, io preferisco usare la posizione, invece di galleggiare:

http://jsfiddle.net/aas7w0tw/1/

Utilizzare un genitore con posizione relativa:

position: relative; 

E i bambini in posizione assoluta:

position: absolute; 

In bonus, è possibile guidare meglio il dimen sioni dei tuoi componenti.

1

se si dispone di due div, è possibile utilizzare questo per allineare div uno accanto all'altro nella stessa riga:

#keyword { 
 
    float:left; 
 
    margin-left:250px; 
 
    position:absolute; 
 
} 
 

 
#bar { 
 
    text-align:center; 
 
}
<div id="keyword"> 
 
Keywords: 
 
</div> 
 
<div id="bar"> 
 
    <input type = textbox name ="keywords" value="" onSubmit="search()" maxlength=40> 
 
    <input type = button name="go" Value="Go ahead and find" onClick="search()"> 
 
</div>

12

Al giorno d'oggi, potremmo usare un po 'di flexbox per allineare quelli div.

.container { 
 
    display: flex; 
 
}
<div class="container"> 
 
    <div> 
 
     <span>source list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 

 
    <div> 
 
     <span>destination list</span> 
 
     <select size="10"> 
 
      <option /> 
 
      <option /> 
 
      <option /> 
 
     </select> 
 
    </div> 
 
</div>

+0

Grazie, non sapevo di 'display: flex'. Aggiunto il link in modo che le persone possano facilmente vedere lo sfondo CSS3. – akauppi

Problemi correlati