2011-02-18 19 views
12

ho 3 div conatined all'interno di un div esterno. li sto allineando orizzontalmente facendoli fluttuare verso sinistra. e div3 come float destrafare div riempire lo spazio rimanente

<div id="outer"> 

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

div1 e div3 hanno dimensioni fisse. se div3 viene lasciato fuori voglio div 2 per riempire lo spazio rimanente. Come posso farlo?

+1

http://jsfiddle.net/ – acm

risposta

24

E qualcosa di simile? 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; 
} 

Corpo:

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

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

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

La tua soluzione ha reso la mia giornata! grazie!! –

+0

brillante lavoro! –

+0

jsfiddle link sembra morto – Wyck

0

Non è necessario a stare a galla #div2, sarà riempire automaticamente lo spazio rimanente.

Se si desidera bordi/riempimento, è necessario assegnare a #div2 un elemento figlio.

0

Questa è una tecnica che utilizza display: table;https://jsfiddle.net/sxk509x2/

sostegno Browser (ad es 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; 
} 

Le classi che contengono "pretty "non sono tenuti ad accompagnare cosa stai cercando di fare. Li ho appena aggiunti per le apparenze.

Problemi correlati