2011-02-18 11 views
12

tengo 3 divs conatined dentro de un div externo. los estoy alineando horizontalmente al dejarlos flotando a la izquierda. y div3 como flotante derechohacer que div llene el espacio restante

<div id="outer"> 

    <div id="div1">always shows</div> 
    <div id="div2">always shows</div> 
    <div id="div3">sometimes shows</div> 
</div> 

div1 y div3 tienen tamaños fijos. si se deja div3, quiero que div 2 complete el espacio restante. ¿Cómo puedo hacerlo?

+1

http://jsfiddle.net/ – acm

Respuesta

24

¿Qué tal algo así? https://jsfiddle.net/Siculus/9vs5nzy2/

CSS:

#container{ 
    width: 100%; 
    float:left; 
    overflow:hidden; /* instead of clearfix div */ 
} 
#right{ 
    float:right; 
    width:50px; 
    background:yellow; 
} 
#left{ 
    float:left; 
    width:50px; 
    background:red; 
} 
#remaining{ 
    overflow: hidden; 
    background:#DEDEDE; 
} 

cuerpo:

<div id="container"> 
    <div id="right">div3</div> 

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

    <div id="remaining">div2, remaining</div> 
</div> 
+1

¡Su solución hizo mi día! ¡¡gracias!! –

+0

brillante trabajo! –

+0

jsfiddle link seem dead – Wyck

0

No es necesario para flotar #div2, que va a llenar automáticamente el espacio restante.

Si desea bordes/relleno, debe darle #div2 un elemento secundario.

0

Esta es una técnica que utiliza display: table;https://jsfiddle.net/sxk509x2/

Compatibilidad del navegador (es decir, 11+): http://caniuse.com/#feat=css-table

HTML

<div class="outer"> 
    <div class="static pretty pretty-extended">$</div> 
    <input class="dynamic pretty" type="number" /> 
    <div class="static pretty">.00</div> 
</div> 

CSS

.outer{ 
    width:300px; 
    height:34px; 
    display:table; 
    position: relative; 
    box-sizing: border-box; 
} 
.static{ 
    display:table-cell; 
    vertical-align:middle; 
    box-sizing: border-box; 
} 
.dynamic{ 
    display:table-cell; 
    vertical-align:middle; 
    box-sizing: border-box; 
    width: 100%; 
    height:100%; 
} 
.pretty{ 
    border: 1px solid #ccc; 
    padding-left: 7px; 
    padding-right: 7px; 
    font-size:16px; 
} 
.pretty-extended{ 
    background: #eee; 
    text-align:center; 
} 

Las clases que contiene "bastante "no están obligados a realizar sh lo que estás tratando de hacer. Los acabo de agregar por las apariencias.

Cuestiones relacionadas