我正在开发一个能够尽可能大地显示照片和其他内容的网站。我的目标是有一个固定大小的页眉和页脚(假设每个都有40px的高度),我希望<div>
元素填充其间的所有空间(即视口的高度100%减去80px)。我只想在所有屏幕上获得最大的内容空间,而不是滚动。
+---------------------+
| Header (40px) |
+---------------------+
| |
| Dynamic (100%-80px) |
| |
| |
+---------------------+
| Footer (40px) |
+---------------------+
这样做的正确方法是什么?这是普通的css甚至可能需要javascript吗?
答案 0 :(得分:0)
使用具有已知页眉和页脚高度的盒子模型,可以很好地实现。
您可以通过box-sizing
选择框模型渲染。
的 DEMO 强>
其他可能性是使用display:table;的 DEMO 强>
如果内容过多,footer
会被推下来。
其他可能性为display:flex
或类似fausses-column的技术,您使用body
background
并且不为中间容器设置边框或背景。页脚保持在绝对位置或固定位置。
基于HTML的演示:
<header>header</header>
<main>main</main>
<footer>footer</footer>
答案 1 :(得分:0)
使用css height:calc(100%-80px)
只能在新浏览器中使用(虽然这是一个相当大的市场份额)
有一些更简单的解决方案,例如固定页眉和页脚,并按页眉和页脚的高度填充内容,以防止内容隐藏在页眉和页脚后面。
中的示例CSS:
body{
background-color:grey;
padding: 50px 0;
margin: 0px;
}
header {
position:fixed;
height:40px;
width:100%;
top:0px;
background-color:red;
}
footer {
position:fixed;
height:40px;
width:100%;
bottom:0px;
background-color:red;
}
HTML:
<header>
Header
</header>
<div>
Contents: Bla Bla Bla
</div>
<footer>
Footer
</footer>
如果内容超出窗口高度
,也可以自动滚动内容