html{
height: 100%;
}
body{
margin: 0;
padding: 0;
height: 100%;
}
.main-body{
display: grid;
/* let content auto to occupy remaining height and pass value in fit-content with min-height for header and footer */
grid-template-rows: fit-content(8rem) auto fit-content(8rem);
grid-template-areas: "header" "main" "footer";
}
.main-header{
background-color: yellow;
grid-area: header;
}
.main-content{
grid-area: main;
}
.main-footer{
background-color: green;
grid-area: footer;
}
<body class="main-body">
<header class="main-header">
HEADER
</header>
<main class="main-content">
this is content
</main>
<footer class="main-footer">
this is footer
</footer>
</body>
8条答案
按热度按时间1dkrff031#
Flexbox溶液
使用Flex布局,我们可以实现这一点,同时允许页眉和页脚的自然高度。页眉和页脚将分别粘在视口的顶部和底部(很像原生移动的应用程序),主内容区域将填充剩余空间,而任何垂直溢出将在该区域内滚动。
See JS Fiddle
超文本标记语言
中央支助组
a2mppw5e2#
总结一下(来自Traingamer提供的CSS Sticky Footer链接),我使用了以下内容:
fkaflof63#
要扩展Mitchel Sellers的答案,请给予您的内容div高度:100%,并给予它一个自动保证金。
有关完整的解释和示例,请参见Ryan Fait的CSS Sticky Footer。
既然你知道标题的大小(高度),就把它放在内容div里面(或者使用边距)。
如果你的内容比窗口大(高),绝对位置会给你带来问题。
iqih9akk4#
一种使用CSS网格实现此目的的方法:
fcy6dtqo5#
使用CSS网格代替它是支持几乎所有的浏览器
ugmeyewa6#
超文本标记语言
中央支助系统
这个css to body将确保页眉和页脚总是分别在顶部和底部。
把所有的内容放在main中。更进一步,你可以根据你的要求使页眉或页脚具有粘性。
检查此处的工作示例https://codepen.io/vishal657/pen/MWBOErq?editors=1100
axkjgtzd7#
如果你想最大化内容div的高度,在CSS中添加
高度:100%;
bwntbbo38#