2011-02-18 11 views
12

J'ai 3 divs conatined dans un div externe. Je les aligne horizontalement en les faisant flotter à gauche. et div3 comme flottant à droitemake div remplir l'espace restant

<div id="outer"> 

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

div1 et div3 ont des tailles fixes. si div3 est omis, je veux que div 2 remplisse l'espace restant. Comment puis-je le faire?

+1

http://jsfiddle.net/ – acm

Répondre

24

Qu'en est-il de quelque chose comme ça? 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; 
} 

Corps:

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

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

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

Votre solution a fait ma journée! Je vous remercie!! –

+0

travail brillant! –

+0

jsfiddle link semble mort – Wyck

0

Vous n'avez pas besoin de flotter #div2, il va remplir automatiquement l'espace restant.

Si vous voulez des bordures/rembourrage, vous devez donner #div2 un élément enfant.

0

C'est une technique utilisant display: table;https://jsfiddle.net/sxk509x2/

support du navigateur (c.-à-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; 
} 

Les classes qui contiennent « assez "ne sont pas tenus au fait sh ce que vous essayez de faire. Je viens de les ajouter pour les apparences.

Questions connexes