css布局,让侧边栏高度撑满,并且不会随着屏幕内容滚动

  • Post author:
  • Post category:其他


一、需求

要让左侧边栏固定,并且不会随着页面的滚动向上滚动,侧边栏内容如果超出,可以显示滚动条

二、实现原理

设置布局:position: fixed

设置overflow-y: scroll

三、效果图:

四、实现代码

<!DOCTYPE HTML>
<html>
<header>
	<title>layout test</title>
</header>
<body>
	<style>
		body {
			margin:0px;
			padding:0px;
		}
		
		.topNav {
			position: fixed;
			width: 100%;
			height:56px;
			background-color: green;
			top: 0px;
			left: 0px;
		}
		
		.leftNav {
			position: fixed;
			height: 100%;
			width: 200px;
			background: pink;
			left: 0px;
			overflow-y: scroll;
		}
		
		.content {
			padding-left:200px;
			background: yellow;
			min-height:768px;
			margin-top:56px;
		}
		h1 {
			margin:0px;
		}
	</style>
	<div class="topNav"></div>
	<div class="leftNav">
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test1</p>
		<p style="height:80px;text-align:center;margin:0px;">test2</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test3</p>
		<p style="height:80px;text-align:center;margin:0px;">test4</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test5</p>
		<p style="height:80px;text-align:center;margin:0px;">test6</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test7</p>
		<p style="height:80px;text-align:center;margin:0px;">test8</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test9</p>
		<p style="height:80px;text-align:center;margin:0px;">test10</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test11</p>
		<p style="height:80px;text-align:center;margin:0px;">test12</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test13</p>
		<p style="height:80px;text-align:center;margin:0px;">test14</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test15</p>
		<p style="height:80px;text-align:center;margin:0px;">test16</p>
		<p style="height:80px;background:gray;text-align:center;margin:0px;">test17</p>
		<p style="height:80px;text-align:center;margin:0px;">test18</p>
	</div>
	<div class="content">
		<h1>这是一条测试内容啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊哈哈哈哈哈哈哈哈哈哈或或或或或或或或或或或或</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
		<h1>这是一条测试内容</h1>
	</div>
</body>
</html>

方法二:

<!DOCTYPE HTML>
<html>
<head>
  <title> flex </title>
 </head>
<body>
<style>
	body {
		margin:0px;
		padding:0px;
	}
	
	#app {
		width:100%;
		height:100%;
		position:fixed;
		background: pink;
		
	}
	#topnav {
		width:100%;
		height:56px;
		background:#000000;
		color: white;
		padding-left: 20px;
		float:left;
	}
	#content {
		width: 100%;
		height: 100%;
		float:left;
		display: flex;
	}
	#leftnav {
		width: 300px;
		height: 100%;
		background:#0099CC;
		overflow-y: auto;
	}
	#content1 {
		width: 100%;
		height: 100%;
		background:#CCCCFF;
		overflow-y: auto;
	}
</style>
	<div id="app">
		<div id="topnav">
			<h3>topnav</h3>
		</div>
		<div id="content">
			<div id="leftnav">
				<ol style="margin-bottom:60px;">
					<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_1</h2></li>
					<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_2</h2></li>
					<li><h2 style="height:50px;background:#9966CC;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_3</h2></li>
					<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_4</h2></li>
					<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_5</h2></li>
					<li><h2 style="height:50px;background:#9966CC;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_6</h2></li>
					<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_7</h2></li>
					<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_8</h2></li>
				</ol>
			
			</div>
			<div id="content1">
				<ol>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
					<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				</ol>
			</div>
		</div>
	</div>

</body>
</html>

效果图:

方法3:

<!DOCTYPE HTML>
<html>
<head>
  <title> flex </title>
 </head>
<body>
<style>
	body {
		margin:0px;
		padding:0px;
	}
	
	#app {
		width:100%;
		height:100%;
		position:fixed;
		background: pink;
		display: flex;
	}
	#topnav {
		width:100%;
		height:56px;
		background:#000000;
		position: fixed;
		color: white;
		padding-left: 20px;
	}
	#leftnav {
		width: 300px;
		height: 100%;
		background:#0099CC;
		margin-top:56px;
		overflow-y: auto;
	}
	#content {
		width: 100%;
		height: 100%;
		background:#CCCCFF;
		margin-top:56px;
		overflow-y:auto;
	}
</style>
	<div id="app">
		<div id="topnav">
			<h3>topnav</h3>
		</div>
		<div id="leftnav">
			<ol>
				<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_1</h2></li>
				<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_2</h2></li>
				<li><h2 style="height:50px;background:#9966CC;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_3</h2></li>
				<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_4</h2></li>
				<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_5</h2></li>
				<li><h2 style="height:50px;background:#9966CC;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_6</h2></li>
				<li><h2 style="height:50px;background:#CCCC00;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_7</h2></li>
				<li><h2 style="height:50px;background:#339999;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_8</h2></li>
				<li><h2 style="height:50px;background:#9966CC;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;">leftnav_9</h2></li>
			</ol>
		
		</div>
		<div id="content">
			<ol style="margin-bottom:60px;">
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
				<li><h2 style="height:60px;background:#003366;border-radius:5px;border-style:solid;border-width:1px;margin-right:20px;color:white">this is content 1</h2></li>
			</ol>
		</div>
	
	</div>

</body>
</html>

效果图同上



版权声明:本文为lyhDream原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。