3 div的中间div占据剩余宽度

时间:2013-03-20 11:43:52

标签: html css

好吧,伙计们,我一直在打破这个球。

我有三个div;左,中,右。全部100%高度。左右div的固定宽度为150px。现在我希望中间div占用剩下的空间。

示例:Here

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

5 个答案:

答案 0 :(得分:18)

使用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

答案 1 :(得分:2)

选中 similar answer

<强> 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

答案 2 :(得分:1)

好的,使用flex并基于this answer

#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>

如果左边和右边的div也有可变宽度,这实际上有效。

答案 3 :(得分:0)

如果你不想使用表格单元格并且不想让你的外框有一个固定的宽度(而是让它们的宽度由它们的内容决定,你可以使用overflow-hidden和float方法)

这种方法的坏处是你必须坚持在你的div上隐藏溢出,而且你必须以倒退的方式安排你的div(见下文)

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 :(得分:0)

我用它来设置侧面物品的宽度。在列出的项目中使用它来获得带有两个侧面按钮的进度条。

ul {
    display: table;
    width: 100%;
}

ul > li {
    display: table-cell;
}

ul > li:nth-child(2) {
    min-width: 100%;
}