要实现一个上下固定,中间自动填满的布局,你可以使用CSS的Flexbox或者Grid布局。下面我将给出两种方法的示例。
方法一:使用Flexbox
HTML:
<div class="container">
<div class="header">Header</div>
<div class="main-content">Main Content</div>
<div class="footer">Footer</div>
</div>
CSS:
.container {
display: flex;
flex-direction: column;
height: 100vh; /* 或者其他你需要的高度 */
}
.header, .footer {
height: 50px; /* 或者其他你需要的高度 */
background-color: #f8f9fa; /* 或者其他你需要的颜色 */
}
.main-content {
flex: 1; /* 使中间部分自动填满剩余空间 */
background-color: #e9ecef; /* 或者其他你需要的颜色 */
}
方法二:使用Grid
HTML:
<div class="container">
<div class="header">Header</div>
<div class="main-content">Main Content</div>
<div class="footer">Footer</div>
</div>
CSS:
.container {
display: grid;
grid-template-rows: auto 1fr auto;
height: 100vh; /* 或者其他你需要的高度 */
}
.header, .footer {
height: 50px; /* 或者其他你需要的高度 */
background-color: #f8f9fa; /* 或者其他你需要的颜色 */
}
.main-content {
background-color: #e9ecef; /* 或者其他你需要的颜色 */
}
注意,在使用Grid布局时,grid-template-rows
属性中的1fr
表示剩余可用空间的一个分数单位,这样.main-content
就会自动填满剩余空间。同时,.header
和.footer
的高度被设置为固定值。如果你想要它们的高度也根据内容自动调整,可以将height
属性改为auto
。不过,在这种情况下,你需要确保.header
和.footer
的内容不会过多,以免挤压.main-content
的空间。
另外,vh
是视口高度单位,100vh
表示视口高度的100%,也就是全屏高度。你可以根据需要调整这个值。