效果预览
页面要求:
- 上下固定高度
- 左右固定宽度
- 中间区域自适应宽高
- 整个页面内容撑满全屏,没有滚动条
技术要点
使用 html5 语义化标签
- header 网页内的标题区域
- nav 导航区域
- aside 侧边栏
- footer 页脚区域
- section 内容分区
- article 文章区域
清除浏览器默认的内外边距
html,
body {
padding: 0px;
margin: 0px;
}
否则会出现滚动条
设置内容高度为 100 vh 撑满屏幕
body {
height: 100vh;
}
另一种方案是设置 html 和 body 高度为 100%
html,body {
height:100%
}
flex实现自适应布局
垂直方向
body {
display: flex;
flex-direction: column;
}
#mainBox {
flex-grow: 1;
}
水平方向
#mainBox {
display: flex;
}
#centerBox {
flex-grow: 1;
}
演示代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS “四合院”布局</title>
<style>
html,
body {
padding: 0px;
margin: 0px;
}
body {
display: flex;
flex-direction: column;
height: 100vh;
}
header {
height: 100px;
background-color: blue;
}
footer {
height: 60px;
background-color: black;
}
#mainBox {
flex-grow: 1;
background-color: gray;
display: flex;
}
#leftBox {
width: 300px;
background-color: red;
}
#centerBox {
flex-grow: 1;
}
#rightBox {
width: 200px;
background-color: yellow;
}
</style>
</head>
<body>
<header></header>
<section id="mainBox">
<aside id="leftBox"></aside>
<article id="centerBox"></article>
<aside id="rightBox"></aside>
</section>
<footer></footer>
</body>
</html>