简体   繁体   English

使div填满剩余空间

[英]make div fill up remaining space

i have 3 divs conatined within an outer div. 我在外部div中有3个div。 i am aligning them horizontally by floating them left. 我通过向左浮动它们水平对齐它们。 and div3 as float right 和div3为浮动权利

<div id="outer">

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

div1 and div3 have fixed sizes. div1和div3具有固定的大小。 if div3 is left out i want div 2 to fill up the remaining space. 如果省略div3我想要div 2来填补剩余的空间。 how can i do it? 我该怎么做?

What about something like this? 这样的事情怎么样? https://jsfiddle.net/Siculus/9vs5nzy2/ https://jsfiddle.net/Siculus/9vs5nzy2/

CSS: 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;
}

Body: 身体:

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

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

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

This is a technique using display: table; 这是一种使用display: table; https://jsfiddle.net/sxk509x2/ https://jsfiddle.net/sxk509x2/

Browser support (ie 11+): http://caniuse.com/#feat=css-table 浏览器支持(即11+): http//caniuse.com/#feat=css-table

HTML 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 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;
}

The classes that contain "pretty" are not required to accomplish what you are trying to do. 包含“pretty”的类不是完成您要执行的操作所必需的。 I just added them for appearances. 我刚刚将它们添加到外观中。

You don't need to float #div2 , it'll automatically fill up the remaining space. 你不需要浮动#div2 ,它会自动填满剩余的空间。

If you want borders/padding, you ought to give #div2 a child element. 如果你想要border / padding,你应该给#div2一个子元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM