2013-05-13 17 views
8

Ho un div genitore e 2 div al suo interno. Il primo div figlio è largo 50px e altezza 100%. Il div di secondo figlio è al 100% di altezza e io per prendere il resto della larghezza (100% - 50px) come faccio?Div per occupare tutta la larghezza rimanente

Ecco il violino che ho creato: http://jsfiddle.net/muGty/ Fondamentalmente voglio div blu (a destra) per occupare completamente il resto del contenitore grigio.

<div class="parent"> 
    <div class="left"></div> 
    <div class="right"></div> 
</div> 
+1

larghezza: calc (100% - 50px); –

+0

Il modo migliore per farlo: http://stackoverflow.com/a/22719552/759452 –

risposta

20

Intendi come this?

<div id="left"> 
</div> 
<div id="right"> 
</div> 

CSS

html, body { 
    height: 100%; 
} 

#left { 
    width:200px; 
    float:left; 
    background: #f00; 
    height: 100%; 
} 
#right { 
    margin-left: 200px; 
    background: #0f0; 
    height: 100%; 
} 

Aggiornamento:

È inoltre possibile utilizzare calc() proprietà in CSS3, che faciliterà questo processo come

html, body { 
    height: 100%; 
} 

#left { 
    width:200px; 
    float:left; 
    background: #f00; 
    height: 100%; 
} 

#right { 
    float: left; 
    background: #0f0; 
    height: 100%; 
    width: calc(100% - 200px); /* Negate the fixed width element value from 100% */ 
} 

Demo 2

+7

Solo una nota ... L'elemento con la proprietà "float" DEVE essere in cima al markup. Esattamente come ha scritto il signor Alien. –

+0

Come fiddle: http://jsfiddle.net/F27sW/ – snappieT

+0

Dopo aver provato diverse soluzioni, questa ha funzionato al meglio! Grazie. –

0

Si potrebbe aggiungere un margine di 50px per right e galleggiare.

0

Che ne modifica la classe giusta per farlo sembrare come questo:

.right{ 
    float:left; 
    height:50px; 
    width: 100%; 
    margin-right:-50px; 
    background-color: blue; 
    display:inline-block; 
} 
1

Basta cambiare il tuo div diritto a questo:

.right{ 
    float:left; 
    height:50px; 
    width: calc(100% - 50px); 
    background-color: blue; 
    display:inline-block; 
} 
+1

Questo non è molto compatibile con i browser più vecchi. Vedi http://caniuse.com/calc – Patrick

0

Si potrebbe anche lavorare con una posizione assoluta per il lato destro colonna. Considerare questo esempio:

.parent{ 
    width:100%; 
    height:50px; 
    background:#888; 
    position:relative 
} 
.left{ 
    float:left; 
    height:100%; 
    width:50px; 
    background:green 
} 
.right{ 
    background:red; 
    position:absolute; 
    bottom:0; 
    left:50px; 
    right:0; 
    top:0 
} 

Vedere anche questo Fiddle. Si noti che è necessario impostare position: relative sul contenitore padre affinché questo voli.

Problemi correlati