2012-01-19 7 views
54

Normalmente, si impostano gli elementi da visualizzare: in linea se si desidera che vengano visualizzati nella stessa riga. Tuttavia, l'impostazione di un elemento su inline significa che l'attributo width non avrebbe senso.Come rendere più div in una riga ma mantenere la larghezza?

Come si fanno divs nella stessa linea senza renderli in linea?

risposta

101

È possibile utilizzare display:inline-block.

Questa proprietà consente a un elemento DOM di avere tutti gli attributi di un elemento di blocco, ma di mantenerlo in linea. Ci sono alcuni inconvenienti, ma il più delle volte è abbastanza buono. Why it's good and why it may not work for you.

EDIT: L'unica moderna browser ha qualche problema con esso è IE7. Vedi Quirksmode.org

+0

Puoi anche farli fluttuare, ma questo viene fornito con una serie di avvertimenti. – prodigitalson

+0

può elaborare stranezze in altri browser? Sono interessato. domanda +1 – cctan

+1

@cctan Puoi leggere di più [qui] (http://flipc.blogspot.com/2009/02/damn-ie7-and-inline-block.html). Fondamentalmente, il problema è che IE7 e IE6 applicano solo "inline-block" agli elementi che sono visualizzati in linea. Può essere risolto come spiegato su quel sito. – lomegor

3

Puoi fluttuare i tuoi div di colonna usando float: a sinistra; e dargli delle larghezze

E per assicurarti che nessuno degli altri tuoi contenuti venga incasinato, puoi dividere i div flottati in un div padre e dargli un po 'di stile float chiaro.

Spero che questo aiuti.

14

ho usato la proprietà

display: table; 

e

display: table-cell; 

per raggiungere il same.Link per giocherellare seguente mostra 3 tavoli avvolti in div e div questi sono ulteriormente avvolto in un div genitore

<div id='content'> 
    <div id='div-1'><!-- COntains table --></div> 
    <div id='div-2'><!-- contains two more divs that require to be arranged one below other --></div> 
</div> 

Ecco il jsfiddle: http://jsfiddle.net/vikikamath/QU6WP/1/ Ho pensato che s potrebbe essere utile a qualcuno che cerchi di impostare div sulla stessa riga senza usare display-in-

+0

+1 Questa è esattamente la risposta che stavo cercando. Ho impostato i due div che volevo essere affiancati a 'display: table-cell' e funziona perfettamente. Molto meglio che fluttuare perché non ha problemi con i contenitori di wrapping e non devi 'clear:; Grazie!! –

+0

Preferirei usare questo approccio rispetto all'altro !! Grazie. – Dev

+0

Se hai un problema, risolvilo con display: table, allora hai 2 problemi: / – Downgoat

Problemi correlati