Довольно часто в верстке приходится создавать такую структуру, при
которой в родительском блоке горизонтально размещается несколько блоков,
чаще всего плавающих. И обычно требуется, чтобы последний блок занимал
всё оставшееся место по ширине. До недавнего времени вполне устраивал
следующий способ, при котором у нас известна ширина первого блока:
HTML
CSS
Пример
Недостатки этого способа лишь:
Но недавно столкнулся с такими требованиями:
Решение было следующим.
HTML
<div class="container clearfix">
<div class="fixed">Блок с известной шириной</div>
<div class="stretch">Блок, заполняющий оставшееся место</div>
</div>
CSS
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {
clear: both;
}
.container {
position: relative;
height: 40px;
background: #ddd;
border: 1px solid #999;
overflow: hidden;
}
.fixed {
float: left;
width: 200px;
height: 40px;
background: #eee;
}
.stretch {
margin-left: 210px;
height: 40px;
background: #aaa;
text-overflow: ellipsis;
overflow: hidden;
}
Пример
Недостатки этого способа лишь:
- Нужно задать ширину первому блоку, соответственно такой же отступ второму.
Но недавно столкнулся с такими требованиями:
- Может быть любое количество плавающих блоков;
- Не все блоки с фиксированной шириной (есть с минимальным или максимальным значением ширины);
- Ну и как обычно последний блок должен занимать всё оставшееся место по ширине.
Решение было следующим.