我希望#x
占用所有可用空间。我该怎么做呢?
(P.S。抱歉mspaint)
答案 0 :(得分:0)
试试这个
CSS
#contentwrapper {
height: 100%;
position: absolute;
}
#a, #rw, #x {
position: relative;
float: left;
}
#a {
border: #ED1C24 3px solid;
display: inline-block;
width: 200px;
height: 100%;
}
#rw {
display: inline-block;
border: #FF7F27 3px solid;
width: 200px;
height: 50%;
}
#x {
border: #7092BE 3px solid;
display: block;
width: 200px;
height: 50%;
}
答案 1 :(得分:0)
我在jsfiddle为您创建了一个示例 使用方法:
position: absolute;
height: 100%;
答案 2 :(得分:0)
如果您对使用%感兴趣,请使用以下代码,否则您必须使用firebug找到宽度和高度
#contentwrapper {
border: 1px solid blue;
display: inline;
float: left;
height: 100%;
position: absolute;
width: 600px;
}
#a, #rw, #x {
float: left;
position: relative;
}
#a {
border: 3px solid #ED1C24;
display: inline-block;
float: left;
height: 99%;
width: 200px;
}
#rw {
border: 3px solid #FF7F27;
display: inline-block;
float: left;
height: 70%;
width: 388px;
}
#x {
border: 3px solid #7092BE;
display: block;
float: left;
height: 27%;
width: 388px;
}
答案 3 :(得分:0)
根据你的图像,你需要#x使用完整的高度,所以定义#x的高度。单独定义每个块的高度(以像素为单位)(px)或百分比(%)可以解决您的问题。
答案 4 :(得分:0)
table
,而不是inline-block
每当您希望某个元素占用可用空间时,您应该考虑display: table
作为最后的手段。 inline-block
和block
元素在处理其中的内容时很有用,但在其父容器的空间方面它们的功能非常有限。 table
内的元素自然填满了可用空间,使他们在尝试实现某些设计目标时更容易使用。
你需要很多包装器。让我们一个接一个地浏览它们。
我们首先使#contentwrapper
成为一个表,然后给它2个单元格来创建左右列。左栏是#a
所在的位置。
<div id="contentwrapper">
<div id="a"></div>
<div id="b"></div>
</div>
#contentwrapper {
display: table;
}
#a {
display: table-cell;
}
#b {
display: table-cell;
}
现在我们转到右栏。在#bcontentwrapper
下创建另一个名为#b
的表格。在此表中,我们需要2行,每行包含1个单元格,以构建#rw
和#x
。
我们将#rwwrapper
的高度0
和#xwrapper
的高度设为100%
,以便#rw
的高度取决于其内容并且#x
将始终占据表格的剩余高度。
如果您想知道,将高度设置为0
将不会使行折叠为水平线,因为行高必须为at least the height required by its cells,前提是您内部有一些内容。并且因为行和单元格不能溢出表格,所以具有正高度的行加上具有100%
高度的行实际上不能超过100%
。第二排被迫采取第一排留下的任何高度,给我们所需要的东西。
<div id="bcontentwrapper">
<div id="rwwrapper">
<div id="rw"></div>
</div>
<div id="xwrapper">
<div id="x"></div>
</div>
</div>
#bcontentwrapper {
display: table;
}
#rwwrapper {
display: table-row;
height: 0;
}
#rw {
display: table-cell;
}
#xwrapper {
display: table-row;
height: 100%;
}
#x {
display: table-cell;
}
我们把这两张桌子放在一起,看看它的外观。
<div id="contentwrapper">
<div id="a"></div>
<div id="b">
<div id="bcontentwrapper">
<div id="rwwrapper">
<div id="rw"></div>
</div>
<div id="xwrapper">
<div id="x"></div>
</div>
</div>
</div>
</div>
哎呀,这看起来与我们开始的问题完全一样。我们回到原点吗?
不用担心,还有最后一招。请记住,我们希望#x
占用可用的高度?当然,您需要将表格#bcontentwrapper
设为100%
高度,以便填充#b
的整个单元格,因此#x
可以获取此表格中的任何内容
但这还不够。 #b
会尝试调整其高度以适应其内容,而不是采用与#a
相同的高度。如果#b
中的内容短于#a
中的内容,则#b
将短于#a
,将空格留在外面,{{1}将没有可用空间消费。
要解决此问题,我们会为#x
提供#b
的高度。这是为了替换0
的默认高度,这会导致它获取其内容所需的最小高度,而不是它所在行的高度(auto
的隐含行和{{1} }})。由于行高必须至少是其单元格所需的高度,因此#a
允许#b
获取所需的高度,并保持0
和{的高度{1}}同步。
#b
完成所有工作后,#a
最终可以占用它一直想要的可用空间。
#b
,因此您可以更改内容并查看布局如何自行调整。
以上解决方案仅适用于Firefox,Chrome,Safari和Opera。为了使这个工作在IE上,感叹,你需要使用#b {
display: table-cell;
height: 0;
}
#bcontentwrapper {
display: table;
height: 100%;
}
。
#x
Click here for the <table>
demo。这很难看,但IE一直都是例外。无论如何。