我正在寻找的是拥有一个包含div
任意数量的页眉和页脚的容器,然后div
在各个页眉/页脚之间进行另一个滚动。问题在于页眉和页脚无法滚动,并且容器/页眉/页脚可以根据其内容采用任何高度。
我只能使用静态大小的页眉/页脚来完成这项工作。在代码中,我添加了我遇到的问题:页眉/页脚中的文本可能会换行,这会将其变为两行。所以标题应该增长以允许这个额外的行,并且内容应该缩小以给标题留出空间。有没有办法在不使用 javascript 的情况下做到这一点?如果有帮助,我会提前知道页眉/页脚的数量。
这将是一个页面中的一个组件,每个页面可能有一个或多个,例如在 2x2 设置中,每个组件占据浏览器窗口的 4 分之一。主要需要该功能,因为浏览器的宽度可能会发生变化,导致标题内容换行。这可以用 javascript 很容易地完成,但我一直听说resize
事件处理程序是邪恶的。
例如,如果我的包装器600px
很高,我可能有 2 个页眉和 1 个页脚。假设第一个标题的内容导致它换行,但第二个标题没有。所以第一个标题高度是20px
第二个标题的高度10px
。假设页脚的内容也会导致换行,因此具有20px
高度。这为我们提供50px
了页眉和页脚的价值,所以现在滚动条的高度应该是550px
.
ASCII艺术:
____________________________________________
| HEADER 1 |
|________breaks to new line__________________|
|____________________________HEADER2_________|
| | ||
| | ||
| This is my scroller | ||
| | ||
| | ||
| | ||
|_________________________________________|_||
| Some |
|_____Footer_________________________________|
HTML:
<div class="wrapper">
<div class="header">
Some<br/>
Header
</div>
<div class="scroller">
Content<br />
Content<br />
Content<br />
Content<br />
...
</div>
<div class="footer">
Some<br/>
Footer
</div>
</div>
CSS:
body{
height:100%;
}
.wrapper{
height:400px;
border-left:1px solid red;
}
.header, .footer{
background-color: #EEE;
height:27px;
}
.scroller{
height:calc(100% - 54px);
background-color: #CCC;
overflow:auto;
}
红色边框是为了显示包装器向下走多远,因此页脚不会显示在下方。我这样做而不是overflow: hidden
仅仅为了调试。