Html 使用上面和下面具有未知高度div的CSS将div设置为剩余高度

Html 使用上面和下面具有未知高度div的CSS将div设置为剩余高度,html,css,height,scrollable,Html,Css,Height,Scrollable,有没有可能使包装器填充窗口高度(无滚动)和中心div可滚动,而不影响像素和javascript <div id="wrapper"> <h1>Header</h1> <div id="center"> <div style="height:1000px">high content</div> </div> <div id="footer">Footer</div>

有没有可能使包装器填充窗口高度(无滚动)和中心div可滚动,而不影响像素和javascript

<div id="wrapper">
  <h1>Header</h1>
  <div id="center">
    <div style="height:1000px">high content</div>
  </div>
  <div id="footer">Footer</div>
</div>

标题
高含量
页脚
基本上,我希望页眉在顶部可见,页脚在底部始终可见,中间有一个可滚动的内容,占据剩余高度。

页眉、页脚和中间div的高度都未知(没有设置px或%,即可变字体大小或填充)。纯CSS有可能吗?

使用
溢出:auto
可以做到这一点


所以你说的是一个粘脚。我去做了更多的研究,这是我给你的

<div id="wrapper" style="height:100%">
<div id="header" style="float:none;"><h1>Header</h1></div>

<div style="overflow:scroll;float:none;height:auto;">high content</div>

<div id="footer" style="clear:both;position:fixed;bottom:0px;"><h1>Footer</h1></div>
</div>

标题
高含量
页脚
这将给你一个粘性的页脚。关键是位置:固定,底部:0px;
不幸的是,这意味着它也会悬停在scrollview中任何内容的上方。到目前为止,似乎只有Javascript能够解决这个问题,但我会继续寻找。

2014更新:解决这个布局问题的现代方法是。所有主流浏览器和IE11+都支持它



2012:单独使用CSS的正确方法是使用
display:table
display:table row
。这些是,从IE8开始。这不是使用表来显示。您将使用div:

html,正文{
身高:100%;
保证金:0;
}
.包装纸{
显示:表格;
身高:100%;
宽度:100%;
背景:黄色;/*只是为了确保没有流血*/
}
.标题{
显示:表格行;
背景:灰色;
}
.内容{
显示:表格行;/*高度是动态的,将展开*/
高度:100%;/*…添加内容时(不会滚动)*/
背景:绿松石;
}
.页脚{
显示:表格行;
背景:浅灰色;
}

标题
可变高度收割台

动态扩展高度以适应新内容的内容 内容高度最初将是剩余的 容器中的高度(
.wrapper
)。 粘脚 可变高度的页脚


一种源于以下答案的跨浏览器解决方案:

html,正文{
保证金:0;
填充:0;
身高:100%;
}
.l-适合高度{
显示:表格;
身高:100%;
}
.l-fit-height-row{
显示:表格行;
高度:1px;
}
.l-fit-height-row-content{
/*Firefox需要这样做*/
显示:表格单元格;
}
.l-fit-height-row-EXTENDED{
身高:100%;
显示:表格行;
}
.l-fit-height-row-expanded>.l-fit-height-row-content{
身高:100%;
宽度:100%;
}
@-moz文档url-前缀(){
.l-卷轴{
/*Firefox需要这样才能正确地进行绝对定位*/
显示:内联块;
}
}
.l-卷轴{
溢出y:自动;
位置:相对位置;
高度:1000px;
}
.l-滚动-内容{
位置:绝对位置;
排名:0;
底部:0;
高度:1000px;
最小高度:100px;
}

标题

页脚


在您的示例中,您将高度设置为80%,但我不知道中间div的高度,我只希望它占据剩余的空间。Thanks@danial,你知道页脚和页眉的高度吗?(以百分比或像素表示)不,我没有,我只是更新了问题。这取决于字体大小、填充和/或其他动态添加的元素。如果可能的话,我不知道怎么做。这里通常的方法是为页眉、内容和页脚分别指定一个基于百分比的大小。这可以通过
display:table
display:table row
完成。看,你是不是想完成和这个问题一样重要的事情?虽然不同的高度会使它更复杂。类似,但布局没有固定高度的页眉或页脚,因此更改页眉或页脚的内容或向其添加元素不会影响中间分区的css属性。根据我的研究,似乎唯一能满足您要求的方法是通过javascript,因为css不支持引用高度,即高度=(page.height-(页眉高度+页脚高度)我想添加以下改进:这允许在单元格内有一个占据整个高度的可滚动区域。唉……还有一个大的破折号,这种改进在Firefox中不起作用。请参阅,但它确实起作用:
display:table row
将删除它应用于的项目的所有边框,在玩了这个w之后除了Opera,其他浏览器都可以使用:@danial这对我今天真的很有帮助,非常感谢。它现在也可以在Opera中使用,因为现在它与Chrome非常相似。我认为你应该用这种方法来回答自己,因为我一直在尝试这个和那个,自己制作标记,谷歌搜索,尝试各种解决方案,只有你做了我想做的在每一个浏览器中都会被修改,甚至没有修改。这是一个非常有用的提琴,应该得到更多的关注。如果能对所有这些类进行一些解释,那就太好了。