Make div заполнить оставшееся пространство
У меня есть 3 divs, координированных внутри внешнего div. Я выравниваю их по горизонтали, плавая влево. и div3 как плавающие вправо
<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
Как насчет чего-то подобного? 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>
Ответ 2
Вам не нужно плавать #div2
, он автоматически заполнит оставшееся пространство.
Если вам нужны границы/отступы, вы должны дать #div2
дочерний элемент.
Ответ 3
Это метод, использующий 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;
}
Классы, содержащие "красивые", не обязаны выполнять то, что вы пытаетесь сделать. Я просто добавил их для выступлений.