有没有办法通过纯 HTML/CSS 来做到这一点?这就是我想要实现的目标:
|---------------------------| <-- start of screen
| header | fixed height
|---------------------------|
| |
| |
| content | fill screen
| |
| |
|---------------------------| <-- end of screen
| footer | auto
|---------------------------|
一些我见过但没有回答我的问题的东西:
如何制作具有固定页眉和页脚且其余部分位于中间的 CSS 网格
body {
width: 100%;
min-height: 100%;
margin: 0 0 0 0;
background-color: gray;
}
.app-wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header header header"
"contnt contnt contnt contnt"
"footer footer footer footer"
;
height: 100vh;
width: 100%;
}
.header {
grid-area: header;
background-color: lightcoral;
}
.content {
grid-area: contnt;
background-color: aqua;
}
.footer {
grid-area: footer;
background-color: lightyellow;
}
<body>
<div class="app-wrapper">
<div class="header">
header
</div>
<div class="content">
content
</div>
<div class="footer">
footer
</div>
</div>
</body>
解决方案:将
header
和content
包裹起来,然后使其具有100vh。
html, body {
width: 100%;
min-height: 100%;
margin: 0 0 0 0;
background-color: gray;
}
.facade-wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header header header"
"contnt contnt contnt contnt"
;
height: 100vh;
width: 100%;
}
.header {
grid-area: header;
background-color: lightcoral;
}
.content {
grid-area: contnt;
background-color: aqua;
}
.footer {
grid-area: footer;
background-color: lightyellow;
}
<body>
<div class="app-wrapper">
<div class="facade-wrapper">
<div class="header">
header
</div>
<div class="content">
content
</div>
</div>
<div class="footer">
footer
</div>
</div>
</body>