效果预览
页面要求:
- 上下固定高度
- 左右固定宽度
- 中间区域自适应宽高
- 整个页面内容撑满全屏,没有滚动条
技术要点
使用 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>