2011-02-18 52 views
12

我有3个divs conconined内外部div。我将它们水平放置在左边。和div3为浮动权使div充满剩余空间

<div id="outer"> 

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

div1和div3具有固定大小。 如果div3被遗漏了,我想div 2填补余下的空间。我该怎么做?

+1

http://jsfiddle.net/ – acm

回答

24

这样的事情呢? 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; 
} 

身体:

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

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

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

您的解决方案成就了我的一天!谢谢!! –

+0

辉煌的工作! –

+0

jsfiddle链接似乎死了 – Wyck

0

你不需要浮动#div2,它会自动填充剩余空间。

如果你想边框/填充,你应该给#div2一个子元素。

0

这是使用display: table;https://jsfiddle.net/sxk509x2/

浏览器支持的技术(即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; 
} 

的类包含“漂亮“没有要求成就嘘你想要做什么。我只是添加他们的外观。