垂直布局——当页面高度小于浏览器高度时,footer固定在屏幕底部;当页面高度超出浏览器高度时,footer显示在页面最底部

垂直布局——当页面高度小于浏览器高度时,footer固定在屏幕底部;当页面高度超出浏览器高度时,footer显示在页面最底部

问题描述:页面分成上、中、下三个部分,上、下部分都为固定高度,中间部分高度不定。当页面高度小于浏览器高度时,下部分应固定在屏幕底部;当页面高度超出浏览器高度时,下部分应该随中间部分被撑开,显示在页面最底部。

  • 不考虑兼容性,flex布局实现代码示例(修改content的高可以查看效果哦):

    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>垂直布局</title>
    		<style type="text/css">
    			html,body{
    				width: 100%;
    				height: 100%;
    			}
    			.container{
    				width: 100%;
    				min-height: 100%;
    				height: auto;
    				display: flex;
    				flex-direction: column;
    			}
    			.main{
    				flex: 1;
    			}
    			.content{
    				height: 1000px;
    			}
    			header{
    				background-color: aquamarine;
    			}
    			footer{
    				background-color: bisque;
    			}
    			header,footer{
    				height: 200px;
    				width: 100%;
    			}
    		</style>
    	</head>
    	<body>
    		<div class="container">
    			<header></header>
    			<div class="main">
    				<div class="content"></div>
    			</div>
    			<footer></footer>
    		</div>
    	</body>
    </html>
    
    

    代码实现思路比较简单,将布局容器的父元素 display 属性设置成 flex,伸缩方向改为垂直方向,高度撑满页面,再将中间布局容器的 flex 属性设置为 1,让其自适应即可。

  • 考虑兼容性代码示例(修改main的高可以查看效果哦):

    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>垂直布局</title>
    		<style type="text/css">
    			html,body{
    				width: 100%;
    				height: 100%;
    			}
    			.container{
    				width: 100%;
    				min-height: 100%;
    				height: auto;
    				padding-bottom: 100px;
    				box-sizing: border-box;
    			}
    			.main{
    				height: 1000px;
    			}
    			header{
    				background-color: aquamarine;
    			}
    			footer{
    				background-color: bisque;
    				margin-top: -200px;
    			}
    			header,footer{
    				height: 200px;
    				width: 100%;
    			}
    		</style>
    	</head>
    	<body>
    		<div class="container">
    			<header></header>
    			<div class="main"></div>
    		</div>
    		<footer></footer>
    	</body>
    </html>
    
    

    将上部分布局容器与中间布局容器放入一个共同的父元素中,并让父元素高度撑满,给父元素设置padding-bottom的值为下部分的高,同时给下部分一个负的margin-top,数值为下部分的高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值