3 div средний div занимает оставшуюся ширину
Хорошо, ребята, я разбил свои яйца над этим.
У меня есть три div; левый, средний, правый. Все 100% высоты. Левый и правый div имеют фиксированную ширину 150 пикселей. Теперь я хочу, чтобы средний div занимал оставшееся пространство.
Пример: Здесь
CSS
#left {
height:100%;
width:150px;
float:left;
background:red;
z-index:999;
}
#middle {
height:100%;
width:100%;
background:yellow;
margin-left:-150px;
margin-right:-150px;
}
#right {
float:right;
height:100%;
width:150px;
background:red;
z-index:998;
}
Ответы
Ответ 1
Используйте display: table
:
#container {
display: table;
width: 100%;
}
#left, #middle, #right {
display: table-cell;
}
#left, #right {
width: 150px;
}
Где #container
- ваш родительский элемент, например, в
<div id="container">
<div id="left"></div>
<div id="middle"></div>
<div id="right"></div>
</div>
Вот Fiddle.
Ответ 2
Отметьте этот похожий ответ
HTML
<div class = "container">
<div class = "fixed">
I'm 150px wide! Glee is awesome!
</div>
<div class = "fluid">
I'm fluid! Glee is awesome!
</div>
<div class = "fixed">
I'm 150px wide! Glee is awesome!
</div>
</div>
CSS
html, body {
height: 100%;
font-family: 'Arial', 'Helvetica', Sans-Serif;
}
.container {
display: table;
width: 100%;
height: 100%;
}
.container > div {
display: table-cell;
text-align: center;
}
.fixed {
width: 150px;
background: rgb(34, 177, 77);
color: white;
}
.fluid {
background: rgb(0, 162, 232);
}
DEMO
Ответ 3
Если вы не хотите использовать ячейки таблицы и не хотите, чтобы ваши внешние блоки фиксировали ширину (вместо этого, чтобы их ширина определялась их содержимым, вы можете использовать метод переполнения и сглаживания)
Плохая вещь об этом методе заключается в том, что вам нужно придерживаться переполнения, скрытого на ваших div, а также вы должны расположить свои divs в обратном порядке (см. ниже).
DEMO
HTML
<div class='container'>
<div class='third-box'>Third</div>
<div class='first-second'>
<div class='first-box'>First</div>
<div class='second-box'>Second</div>
</div>
</div>
CSS
.container {
width: 400px;
}
.first-second {
overflow: hidden;
}
.first-box {
float: left;
background-color: coral;
}
.second-box {
overflow: hidden;
background-color: aquamarine;
}
.third-box {
float: right;
background-color: salmon;
}
Ответ 4
Хорошо, используя flex и на основе этого ответа
#parent {
display: flex;
}
#left {
width:150px;
background-color:#ff0000;
}
#middle {
flex: 1 1 auto;
background-color:#00ff00;
}
#right {
width: 150px;
background-color:#0000ff;
}
<div id="parent">
<div id="left">left</div>
<div id="middle">middle</div>
<div id="right">right</div>
</div>