今天写了一个简单的导航栏

实现后的效果如下图

javascript导航栏切换页面 用js做导航栏_html

javascript导航栏切换页面 用js做导航栏_javascript_02

首先来写一下思路实现步骤:

第一步:先创建 x 个 div 盒子,并为所有的盒子绑定相同的class属性,我这里绑定的是 isPages,盒子内可以写任意内容。x 为最终结果显示的页数。

第二步:设置 div 盒子 css 样式,将 isPages 设置为隐藏,使用 display 属性设置为 none。盒子内的内容根据自己喜好进行设置。

第三步:创建导航,先创建一个 div 盒子,盒子内用于存放导航操作按钮,把固定不变的按钮先放入盒子中,再在盒子中创建一个盒子,用于存放动态的页码。

第四步:开始编写脚本,需要将页码的总数和当前页面所在位置搞明白。还需要理顺代码的运行顺序。

脚本思路:

第一步:实现页码的显示,创建三个变量,1、需要同时显示的页码数量;2、存放动态页码 innerHTML 的代码;3、定义当前显示的第一个页码,这样就可以知道当前显示的所有页码;

第二步:利用循环创建动态页码,完成后创建导航固定按钮首页、上一页、下一页、尾页的点击事件,每触发一次点击事件更新第一步中的动态页码变量、页码位置变量;

第三步:创建动态导航页码点击事件。

下面直接上代码,复制即可使用。

导航代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<style type="text/css">
			.isPages {
				display: none;
			}
			
			#isNavContent {
				margin: 0;
				padding: 10px;
			}
			#isNavContent li {
				list-style: none;
				float: left;
				display: block;
				text-align: center;
				width: 50px;
				height: 35px;
				line-height: 35px;
				color: #333333;
				border: 1px solid #DDDDDD;
				background-color: #F2F2F2;
				cursor: pointer;
			}
			#isNavContent li:hover {
				background-color: #0AB0F6;
				color: #FFFFFF;
			}
			
			#pageContent {
				float: left;
			}
			
			#pageContent li:hover {
				background-color: #0AB0F6 !important;
				color: #FFFFFF !important;
			}
			
			.clear_both {
				clear: both;
			}
		</style>
		<!-- 
		每一页为一个div盒子,设置display属性控制,className为isPages
		每一页显示数量固定,如果需要动态显示可以使用ajax动态获取需要显示的条数
		-->
		<div class="isPages">
			<ul class="iscontents">
				<li>
					1在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					2在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					3在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					4在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					5在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					6在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					7在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					8在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		<div class="isPages">
			<ul class="iscontents">
				<li>
					9在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
				<li>
					在新的阅读视图中阅读更加容易
				</li>
			</ul>
		</div>
		
		
		<!-- 设置分页导航栏,写一个div盒子及一些固定的元素,js动态控制显示的页数及页码 -->
		<div id="isNav">
			<ul id="isNavContent">
				<li id="pageStart">首页</li>
				<li id="front">上一页</li>
				<div id="pageContent">
					
				</div>
				<li id="next">下一页</li>
				<li id="pageEnd">尾页</li>
			</ul>
			<div class="clear_both"></div>
		</div>
		
		<!-- js显示控制分页导航 -->
		<script type="text/javascript">
			let isPages = document.getElementsByClassName('isPages');
			let ispagesSum = isPages.length; // 获取总页数
			let pageContent = document.getElementById('pageContent'); // 获取储存页码代码盒子
			
			// 隐藏全部
			function pagesNone() {
				for(let i = 0; i < ispagesSum; i++) {
					isPages[i].style.display = 'none';
				}
			}
			pagesNone();
			
			// 设置导航最多同时显示页面
			let pageNum = 3; // 显示页码数量
			let pageHtml; // 页码代码
			let pO = 1; // 页码第一个显示数
			function getPH() {
				pageHtml = '';
				for(let i = 0; i < pageNum; i++) {
					if((i + pO) <= ispagesSum){
						pageHtml += `<li id="${'page' + (i + pO)}" class="pageName">${i + pO}</li>`;
					}
				}
				
				// 设置分页导航
				pageContent.innerHTML = pageHtml;
				
				// 添加导航事件
				let pageName = document.getElementsByClassName('pageName');
				for(let i = 0; i < pageNum; i++) {
					if((i + pO) <= ispagesSum){
						pageName[i].addEventListener('click', function() {
							pagesNone();
							isPages[i + (pO - 1)].style.display = 'block';
							let pageId = 'page' + (i + pO);
							let pageStyle = document.getElementById(pageId);
							// 隐藏全部选中样式
							for(let j = 0; j < pageNum; j++) {
								if((j + pO) <= ispagesSum){
									let _pageId = 'page' + (j + pO);
									let _pageStyle = document.getElementById(_pageId);
									_pageStyle.style.backgroundColor = '#f2f2f2';
									_pageStyle.style.color = '#333333';
								}
							}
							
							pageStyle.style.backgroundColor = '#0AB0F6';
							pageStyle.style.color = '#FFFFFF';
						})
					}
				}
				
			}
			getPH();
			
			
			// 设置默认显示第一页
			isPages[0].style.display = 'block';
			// 设置默认样式
			document.getElementById('page1').style.backgroundColor = '#0AB0F6';
			document.getElementById('page1').style.color = '#FFFFFF';
			
			
			// 获取导航操作ID
			let pageStart = document.getElementById('pageStart');
			let pageEnd = document.getElementById('pageEnd');
			let front = document.getElementById('front');
			let next = document.getElementById('next');
			
			
			// 导航操作
			pageStart.addEventListener('click', function() {
				pO = 1;
				getPH();
			})
			pageEnd.addEventListener('click', function() {
				pO = ispagesSum - 1;
				getPH();
			})
			front.addEventListener('click', function() {
				if(pO < 3) {
					pO = 1;
				}else{
					pO -= 2;
				}
				getPH();
			})
			next.addEventListener('click', function() {
				if(pO > (ispagesSum - 3)) {
					pO = ispagesSum - 1;
				}else{
					pO += 2;
				}
				getPH();
			})
			
		</script>
	</body>
</html>