2016-01-18 10 views
5
<div id="firstRow"> 
    <div id="one">AAA</div> 
    <div id="two"><input style="width: 100%" type="search"></div> 
    <div id="three">AAAAAA</div> 
</div> 

Ho tre div s.Tre div in fila CSS

  • voglio galleggiare div con id one a sinistra. La larghezza di div dipende dal suo contenuto.
  • Voglio fluttuare div tre a destra con larghezza automatica a seconda anche del suo contenuto.
  • Desidero che lo div con ID due occupi tutto lo spazio rimanente.

l'ho fatto con tavolo ma voglio con div s

<table> 
    <tr> 
     <td id="one">AAAAAAAAAAAAAAAAAAAAA</td> 
     <td id="two"><input style="width: 100%" type="search"></td> 
     <td id="three">AAAAAA</td> 
    </tr> 
</table> 

table { 
    width: 100%; 
} 

#one 
    width: auto; 
    height: 20px; 
    background-color: red; 
} 

#two{ 
    width: 100%; 
    height: 20px; 
    background-color: orange; 
} 

#three { 
    width: auto; 
    height: 20px; 
    background-color: green; 
} 
+0

correlati: http://stackoverflow.com/q/2603700/3597276 –

+0

A mio parere la risposta FlexBox di Nenad è la strada da percorrere. –

risposta

4

Si può fare questo con Flexbox

#firstRow { 
 
    display: -webkit-box; 
 
    display: -ms-flexbox; 
 
    display: -webkit-flex; 
 
    display: flex; 
 
} 
 

 
#one { 
 
    background-color: red; 
 
} 
 

 
#two { 
 
    -webkit-flex: 1;  
 
    -ms-flex: 1;  
 
    flex: 1; 
 
} 
 
    
 
#three { 
 
    background-color: green; 
 
}
<div id="firstRow"> 
 
    <div id="one">AAA</div> 
 
    <div id="two"><input style="width: 100%" type="search"></div> 
 
    <div id="three">AAAAAA</div> 
 
</div>

+0

Buona risposta, ma [la flexbox non ha il pieno supporto] (http://caniuse.com/#feat=flexbox). – Ouroborus

+1

@Ouroborus, tutti i browser moderni supportano flexbox. Solo lo sbiadito IE 8 e 9 non lo fanno. Se si tratta di una buona risposta, dovresti fare l'upvoting, perché il supporto del browser non è un problema (a meno che OP non richieda il supporto IE 8 e 9 in questione). –

+1

Non sono d'accordo con Ouroborus, devi guardare indietro abbastanza lontano per vedere una mancanza di supporto di flexbox (a meno che tu non rifiuti di usare i tag del fornitore). Tuttavia, suggerirei che la risposta sarebbe ancora più utile con i tag del fornitore per IE10 e Safari 8 (che include Chrome su iOS 8, altrimenti non mi preoccuperei). Non penso sia necessario aggiungere i vecchi tag del fornitore, quasi nessuno ne avrà bisogno. –

1

Non c'è di solito un punto a questo perché, beh , hai i tavoli.

.table { 
 
    display:table; 
 
    width:100%; 
 
    border-spacing:2px; 
 
} 
 
.row { 
 
    display:table-row; 
 
} 
 
.cell { 
 
    display:table-cell; 
 
    padding:1px; 
 
} 
 
.cell,td { 
 
    white-space:nowrap; 
 
}
<div class="table"> 
 
    <div class="row"> 
 
     <div class="cell" style="background-color:#f88;">cell 1</div> 
 
     <div class="cell" style="background-color:#8f8;width:100%;"><input style="width: 100%" type="search" placeholder="Search box"></div> 
 
     <div class="cell" style="background-color:#88f;">cell 3</div> 
 
    </div> 
 
</div> 
 
<table style="width:100%;"> 
 
    <tr> 
 
     <td style="background-color:#f88;">cell 1</td> 
 
     <td style="background-color:#8f8;width:100%;"><input style="width: 100%" type="search" placeholder="Search box"></td> 
 
     <td style="background-color:#88f;">cell 3</td> 
 
    </tr> 
 
</table>

+0

Nel 1998, il ragazzo che per primo ha pensato di usare le tabelle per il layout ha scritto un articolo intitolato "La rete è rovinata e l'ho rovinata", lamentando la sua orribile decisione di fare una cosa del genere. Da allora, l'uso di tabelle per il layout è un'oscenità ampiamente nota che nessuno sviluppatore esperto potrebbe mai fare considerando la moltitudine di metodi migliori di quelli. Inoltre, le proprietà della tabella CSS non rendono un elemento HTML una tabella. – Rob

+1

@Rob L'unica differenza significativa è il contesto implicito. Slap un 'role =" presentation "' sul tavolo e la differenza viene rimossa. Ma sono d'accordo, solo un mostro lo farebbe. (La domanda originale di OP era fondamentalmente "Come faccio a creare una tabella senza usare'

'?". Viene migrato da quello.) – Ouroborus

+0

L'aggiunta di un attributo a un elemento HTML non cambia la struttura, la struttura, del documento HTML; in particolare l'attributo role che non esiste nello standard. – Rob