网站首页 > 基础教程 正文
技术背景
在前端开发中,经常会遇到需要让某个div元素填充屏幕剩余高度的需求,比如创建具有固定头部和底部,中间内容区域自适应填充剩余空间的布局。随着CSS技术的发展,有多种方法可以实现这一需求。
实现步骤
Flexbox方法
- 所有主流浏览器和IE11+都支持Flexbox,对于IE 10或更旧版本,可以使用FlexieJS垫片。
- 示例代码如下:
html,
body {
height: 100%;
margin: 0;
}
.box {
display: flex;
flex-flow: column;
height: 100%;
}
.box .row {
border: 1px dotted grey;
}
.box .row.header {
flex: 0 1 auto;
}
.box .row.content {
flex: 1 1 auto;
}
.box .row.footer {
flex: 0 1 40px;
}
<div class="box">
<div class="row header">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="row content">
<p>
<b>content</b>
(fills remaining space)
</p>
</div>
<div class="row footer">
<p><b>footer</b> (fixed height)</p>
</div>
</div>
CSS Table方法
- 可以使用CSS表格来实现布局。
- 示例代码如下:
body
{
display:table;
width:100%;
}
div
{
display:table-row;
}
div + div
{
height:100%;
}
<body>
<div>hello </div>
<div>there</div>
</body>
calc()方法
- 当知道头部和底部元素的固定高度时,可以使用CSS3的calc()函数。
- 示例代码如下:
html,
body {
height: 100%;
}
header {
height: 100px;
background: grey;
}
section {
height: calc(100% - (100px + 150px));
background: tomato;
}
footer {
height: 150px;
background-color: blue;
}
<header>100px</header>
<section>Expand me for remaining space</section>
<footer>150px</footer>
vh单位方法
- vh代表视口高度,可以直接使用该单位设置元素高度。
- 示例代码如下:
body {
padding: 0;
margin: 0;
}
.full-height {
width: 100px;
height: 100vh;
background: red;
}
<div class="full-height">
</div>
CSS Grid方法
- 使用CSS Grid布局可以很方便地实现布局。
- 示例代码如下:
* {
margin: 0;
padding: 0;
}
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
header {
padding: 1em;
background: pink;
}
main {
padding: 1em;
background: lightblue;
}
footer {
padding: 2em;
background: lightgreen;
}
<header>HEADER</header>
<main>MAIN</main>
<footer>FOOTER</footer>
最佳实践
- xxxxxxxxxx display: -webkit-box;display: -webkit-flex;display: -moz-box;display: -ms-flexbox;display: flex;-webkit-flex-align: center;-ms-flex-align: center;-webkit-align-items: center;align-items: center;css
- 如果需要支持旧版本浏览器,可以结合使用CSS Table或JavaScript来实现。
- 在使用calc()函数时,确保父元素的高度已经正确设置。
常见问题
- 兼容性问题:不同浏览器对CSS属性的支持可能不同,需要进行充分的测试。
- 滚动问题:当内容区域超出屏幕高度时,可能会出现滚动条的问题,需要进行适当的处理。
- 布局错乱:在响应式设计中,布局可能会因为屏幕尺寸的变化而错乱,需要使用媒体查询进行调整。
猜你喜欢
- 2025-05-21 HTML DOM Columngroup 对象
- 2025-05-21 零基础学习HTML图像热区特殊字符无序列表和有序定义列表表格
- 2025-05-21 高效设计表格 - 用我们的HTML表格生成器轻松搞定
- 2025-05-21 前端入门——html 表单
- 2025-05-21 我问AI——以前网页编程流行用table布局,为什么不用了
- 2025-05-21 平和!晨间攻克 HTML 表格属性题,面试难题轻松化解
- 2024-07-21 HTML页面中head标签有啥用?——零基础自学网页制作
- 2024-07-21 HTML基础篇--11表格(基础)(html表格教程)
- 2024-07-21 web前端干货,打破常规做法——如何使用Table元素展示分组数据
- 2024-07-21 table元素在自适应布局中的自适应性
- 05-21HTML DOM Columngroup 对象
- 05-21零基础学习HTML图像热区特殊字符无序列表和有序定义列表表格
- 05-21让div填充屏幕剩余高度的方法
- 05-21高效设计表格 - 用我们的HTML表格生成器轻松搞定
- 05-21前端入门——html 表单
- 05-21我问AI——以前网页编程流行用table布局,为什么不用了
- 05-21平和!晨间攻克 HTML 表格属性题,面试难题轻松化解
- 05-21一键超4400MHz!豪华灯效+高频至尊享受
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)