网页不满屏幕高度时,footer始终显示在底部

做B/S开发,对前端美化时,经常遇到一种情况就是,网页不满屏幕高度,footer不显示在底部,各种难看,怎样做到:

网页不满屏幕高度时,footer始终显示在底部,网页超出屏幕高度,footer自动随网页滚动呢 ? 

其实方法有很多种,网上搜一大堆,这里记录其中一种做法,就是利用CSS来实现。


情况一:静态网页

这个属于最简单也是最基本的情况,一般分为不使用第三方CSS框架和使用第三方CSS框架 ( 如 Bootstrap ),都可以直接使用CSS实现,如:

1)不使用第三方CSS框架,页面高度不满屏幕高度,footer固定于底部,这个最简单:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>TEST</title>

		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			
			body {
				font: 14px/1.8 arial;
			}
			
			html,
			body,
			.mycontent {
				height: 100%;
			}
			
			.mycontent {
				height: auto;
				min-height: 100%;
				font-size: 18px;
				text-align: center;
			}
			
			.main {
				padding-bottom: 80px;
			}
			
			.myfooter {
				position: relative;
				height: 80px;
				line-height: 80px;
				margin-top: -80px;
				background: #333;
				color: #fff;
				font-size: 16px;
				text-align: center;
			}
		</style>

	</head>

	<body>
		<div class="mycontent">
			<div class="main">

				<h1>春晓</h1>
				<p>春眠不觉晓,</p>
				<p>处处闻啼鸟。</p>
				<p>夜来风雨声,</p>
				<p>花落知多少。</p>


			</div>
		</div>
		<div class="myfooter">
			<h1>页面高度不满屏幕高度,footer固定于底部</h1>
		</div>
	</body>

</html>

2)不使用第三方CSS框架,页面高度超过屏幕高度,footer随滚轮滚动:
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>TEST</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			
			body {
				font: 14px/1.8 arial;
			}
			
			html,
			body,
			.mycontent {
				height: 100%;
			}
			
			.mycontent {
				height: auto;
				min-height: 100%;
				font-size: 18px;
				text-align: center;
			}
			
			.main {
				padding-bottom: 80px;
			}
			
			.myfooter {
				position: relative;
				height: 80px;
				line-height: 80px;
				margin-top: -80px;
				background: #333;
				color: #fff;
				font-size: 16px;
				text-align: center;
			}
		</style>

	</head>

	<body>
		<div class="mycontent">
			<div class="main">
    	
				<h1>春晓</h1>
				<p>春眠不觉晓,</p>
				<p>处处闻啼鸟。</p>
				<p>夜来风雨声,</p>
				<p>花落知多少。</p>
				<br />
				<h1>小池</h1>
				<p>泉眼无声惜细流,</p>
				<p>树阴照水爱晴柔。</p>
				<p>小荷才露尖尖角,</p>
				<p>早有蜻蜓立上头。</p>
				<br />
				<h1>山居秋暝</h1>
				<p>空山新雨后,</p>
				<p>天气晚来秋。</p>
				<p>明月松间照,</p>
				<p>清泉石上流。</p>
				<p>竹喧归浣女,</p>
				<p>莲动下渔舟。</p>
				<p>随意春芳歇,</p>
				<p>王孙自可留。</p>				
				<br />
				<h1>江雪</h1>
				<p>千山鸟飞绝,</p>
				<p>万径人踪灭。</p>
				<p>孤舟蓑笠翁,</p>
				<p>独钓寒江雪。</p>
				<br />
				<br />
				<br />
				
			</div>
		</div>
		<div class="myfooter">
			<h1>页面高度超过屏幕高度,footer随滚轮滚动</h1>
		</div>
	</body>

</html>

3) 使用第三方CSS框架 (以 Bootstrap 为例), 页面高度不满屏幕高度,footer固定于底部:
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>TEST</title>
		<script type="text/javascript" src="js/jquery-3.2.0.min.js"></script>
		<script type="text/javascript" src="js/bootstrap.js"></script>
		<link rel="stylesheet" href="css/bootstrap.css" />
		
<style>
	* {
		margin: 0;
		padding: 0;
	}
	
	html,
	body,
	.mycontent {
		height: 100%;
	}
	
	.mycontent {
		height: auto;
		min-height: 100%;
		_height: 100%;
		padding-top: 50px;
	}
	
	.myfooter {
		position: relative;
		height: 80px;
		/*line-height尽量不要超过height高度*/
		line-height: 70px;
		margin-top: -80px;
		background: #333;
		color: #fff;
		font-size: 16px;
		text-align: center;
		vertical-align: bottom;
	}
</style>
	</head>

	<body>
		<!--导航栏部分-->
		<div class="navbar navbar-default navbar-fixed-top">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
			                <span class="sr-only">Toggle navigation</span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
		    	</button>
				<a class="navbar-brand " href="javascript:;">XXX管理系统</a>
			</div>
		</div>	
			

		
		<!--内容部分-->
		<div class="container body-content mycontent">	
			<div class="row" style="text-align: center;">
				<div class="col-sm-12">
					<h1>春晓</h1>
					<p>春眠不觉晓,</p>
					<p>处处闻啼鸟。</p>
					<p>夜来风雨声,</p>
					<p>花落知多少。</p>
					<br />
				</div>
			</div>
		</div>

		
		<!--Footer部分-->
	 <div class="myfooter hidden-print">
			<p style="font-size: 30px;">Bootstrap 页面高度不满屏幕高度,底部固定</p>
     </div>

	</body>

</html>

4)使用第三方CSS框架 (以 Bootstrap 为例),页面高度超过屏幕高度,footer随滚动条滚动:
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>TEST</title>
		<script type="text/javascript" src="js/jquery-3.2.0.min.js"></script>
		<script type="text/javascript" src="js/bootstrap.js"></script>
		<link rel="stylesheet" href="css/bootstrap.css" />
		
		
<style>
	* {
		margin: 0;
		padding: 0;
	}
	
	html,
	body,
	.mycontent {
		height: 100%;
	}
	
	.mycontent {
		height: auto;
		min-height: 100%;
		_height: 100%;
		padding-top: 50px;
	}
	
	.myfooter {
		position: relative;
		height: 80px;
		/*line-height尽量不要超过height高度*/
		line-height: 70px;
		margin-top: 0px;
		background: #333;
		color: #fff;
		font-size: 16px;
		text-align: center;
	}
</style>

	</head>

	<body>
		<!--导航栏部分-->
		<div class="navbar navbar-default navbar-fixed-top ">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
			                <span class="sr-only">Toggle navigation</span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
		    	</button>
				<a class="navbar-brand " href="javascript:;">XXX管理系统</a>
			</div>
		</div>	
			

		
		<!--内容部分-->
		<div class="container body-content mycontent">	
			<div class="row" style="text-align: center;">
				<div class="col-sm-12">
				<h1>春晓</h1>
				<p>春眠不觉晓,</p>
				<p>处处闻啼鸟。</p>
				<p>夜来风雨声,</p>
				<p>花落知多少。</p>
				<br />
				<h1>小池</h1>
				<p>泉眼无声惜细流,</p>
				<p>树阴照水爱晴柔。</p>
				<p>小荷才露尖尖角,</p>
				<p>早有蜻蜓立上头。</p>
				<br />
				<h1>山居秋暝</h1>
				<p>空山新雨后,</p>
				<p>天气晚来秋。</p>
				<p>明月松间照,</p>
				<p>清泉石上流。</p>
				<p>竹喧归浣女,</p>
				<p>莲动下渔舟。</p>
				<p>随意春芳歇,</p>
				<p>王孙自可留。</p>				
				<br />
				<h1>江雪</h1>
				<p>千山鸟飞绝,</p>
				<p>万径人踪灭。</p>
				<p>孤舟蓑笠翁,</p>
				<p>独钓寒江雪。</p>
				<br />
				<br />
				<br />
				<br />
				<br />
				<br />

				
				</div>
			</div>
		</div>

		
		<!--Footer部分-->
	 <div class="myfooter hidden-print">
			<p style="font-size: 30px;">Bootstrap 页面高度超过屏幕高度,footer随滚动条滚动</p>
     </div>

	</body>

</html>



情况二:非静态网页

这个属于日常遇到比较多的情况,,都可以配合使用CSS和JS实现,如:

1)简单的网页元素变更导致网页高度超过屏幕高度(注意请自行添加示例中的 jquery引用):

<!DOCTYPE html>
<html>

	<head>
		<script type="text/javascript" src="js/jquery-3.2.0.min.js" ></script>
		<meta charset="UTF-8">
		<title>TEST</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			
			body {
				font: 14px/1.8 arial;
			}
			
			html,
			body,
			.mycontent {
				height: 100%;
			}
			
			.mycontent {
				height: auto;
				min-height: 100%;
				font-size: 18px;
				text-align: center;
			}
			
			.main {
				padding-bottom: 80px;
			}
			
			.myfooter {
				position: relative;
				height: 80px;
				line-height: 80px;
				margin-top: -80px;
				background: #333;
				color: #fff;
				font-size: 16px;
				text-align: center;
			}
		</style>
		<script>
			function AddHtml() {

				$('.main').append("<h1>春晓</h1>")

			}
		</script>
	</head>

	<body>
		<div class="mycontent">
			<div class="main">
				<button οnclick="AddHtml();">添加行信息</button>
				<h1>春晓</h1>
				<p>春眠不觉晓,</p>
				<p>处处闻啼鸟。</p>
				<p>夜来风雨声,</p>
				<p>花落知多少。</p>
				<br />

			</div>
		</div>
		<div class="myfooter">
			<h1>CSS+JS 动态网页footer</h1>
		</div>
	</body>

</html>

2)带有第三方CSS框架(如 Bootstrap)的网页元素变更导致网页高度超过屏幕高度:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>TEST</title>
		<script type="text/javascript" src="js/jquery-3.2.0.min.js"></script>
		<script type="text/javascript" src="js/bootstrap.js"></script>
		<link rel="stylesheet" href="css/bootstrap.css" />
		
		
<style>
	* {
		margin: 0;
		padding: 0;
	}
	
	html,
	body,
	.mycontent {
		height: 100%;
	}
	
	.mycontent {
		height: auto;
		min-height: 100%;
		_height: 100%;
		padding-top: 50px;
	}
	
	.myfooter {
		position: relative;
		height: 80px;
		/*line-height尽量不要超过height高度*/
		line-height: 70px;
		margin-top: -80px;
		background: #333;
		color: #fff;
		font-size: 16px;
		text-align: center;
	}
</style>

<script>
	function AddHtml() {
		$('.col-sm-12').append("<h1>春晓</h1>");
		var content_top = $('.col-sm-12').offset().top;
		var content_height = $('.col-sm-12').height();
		var footer_top = $('.myfooter').offset().top;

		if(content_top + content_height >= footer_top) {
			$('.myfooter').css('margin-top', 0)
		} else {
			$('.myfooter').css('margin-top', -80)
		}
	}
</script>
	</head>

	<body>
		<!--导航栏部分-->
		<div class="navbar navbar-default navbar-fixed-top ">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
			                <span class="sr-only">Toggle navigation</span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
			                <span class="icon-bar"></span>
		    	</button>
				<a class="navbar-brand " href="javascript:;">XXX管理系统</a>
			</div>
		</div>	
			

		
		<!--内容部分-->
		<div class="container body-content mycontent">	
			<div class="row" style="text-align: center;">
				<div class="col-sm-12">
				<button οnclick="AddHtml();">添加行信息</button>
				<h1>春晓</h1>
				<p>春眠不觉晓,</p>
				<p>处处闻啼鸟。</p>
				<p>夜来风雨声,</p>
				<p>花落知多少。</p>
				<br />

				
				</div>
			</div>
		</div>

		
		<!--Footer部分-->
	 <div class="myfooter hidden-print">
			<p style="font-size: 30px;">Bootstrap 页面高度超过屏幕高度,footer随滚动条滚动</p>
     </div>

	</body>

</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值