网页定位导航

这篇博客介绍了如何利用jQuery和JavaScript两种方法实现网页定位导航。作者作为新手,在学习过程中遇到挑战,通过实践加深了对jQuery和原生JS的理解,尤其是滚动定位的技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习了运用jQuery、JavaScript两种方式实现网页定位导航。

第一种

运用jquery

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>网页定位</title>
	<style>
		*{
			margin:0;
			padding: 0;
		}
		body{
			font-size: 12px;
			line-height: 1.7;
		}
		li{
			list-style: none;
		}
		#content{
			width: 800px;
			margin :0 auto;
			padding: 20px;
		}
		#content h1{
			color: #0088bb;
		}
		#content .item{
			padding:20px;
			margin-bottom: 20px;
			border: 1px dotted #0088bb; 
		}
		#content .item h2{
			font-size: 16px;
			font-weight: bold;
			border-bottom: 2px solid #0088bb;
			margin-bottom: 10px;
		}
		#content .item li{
			display: inline;
			margin-right: 10px;
		}
		#content .item li a img{
			width: 230px;
			height: 230px;
			border:none;
		}
		#menu{
			position: fixed;
			top:100px;
			left: 50%;
			margin-left: 400px;
			width: 80px;
		}

		#menu ul li a{
			display: block;
			margin:5px 0;
			font-size: 14px;
			font-weight: bold;
			color: #333;
			width: 80px;
			height: 50px;
			line-height: 50px;
			text-decoration: none;
			text-align: center;
		}

		#menu ul li a:hover,
		#menu ul li a.current{
			color: #fff;
			background: #0088bb;
		}
	</style>
	<script src="https://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
	<script>

		$(document).ready(function(){
			//滚动条发生滚动
			$(window).scroll(function(){

                  var top = $(document).scrollTop();
                  var menu = $("#menu");
                  var items = $("#content").find(".item");

                  var currentId = "";//当前所在的楼层id
                  items.each(function(){
                  	var m = $(this);
                  	var itemTop = m.offset().top;
                    if (top > itemTop -200) {
                         currentId = "#" + m.attr("id");
                    }else {
                    	return false;
                    }
                  });
                  
                  //给相应的楼层的a设置current,取消其他链接的current
                  var currentLink = menu.find(".current");
                  if (currentId && currentLink.attr("href")!=currentId) {
                  	 currentLink.removeClass("current");
                  	 menu.find("[href=" + currentId + "]").addClass("current");
                  }
                  //console.log(top)
			});
		});

	</script>
</head>
<body>
<div id="menu">
	<ul>
		<li><a href="#item1" class="current">1F 小猫</a></li>
		<li><a href="#item2">2F 小狗</a></li>
		<li><a href="#item3">3F 老虎</a></li>
		<li><a href="#item4">4F 狮子</a></li>
		<li><a href="#item5">5F 大象</a></li>
	</ul>
</div>
<div id="content">
	<h1>动物网</h1>

	<div id="item1" class="item">
	<h2>1F 小猫</h2>
	<ul>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item2" class="item">
	<h2>2F 小狗</h2>
	<ul>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item3" class="item">
	<h2>3F 老虎</h2>
	<ul>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item4" class="item">
	<h2>4F 狮子</h2>
	<ul>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item5" class="item">
	<h2>5F 大象</h2>
	<ul>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
	</ul>
</div>
</div>
</body>
</html>

 

实现效果如图

 

 

第二种

运用原生JS实现

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>网页定位</title>
	<style>
		*{
			margin:0;
			padding: 0;
		}
		body{
			font-size: 12px;
			line-height: 1.7;
		}
		li{
			list-style: none;
		}
		#content{
			width: 800px;
			margin :0 auto;
			padding: 20px;
		}
		#content h1{
			color: #0088bb;
		}
		#content .item{
			padding:20px;
			margin-bottom: 20px;
			border: 1px dotted #0088bb; 
		}
		#content .item h2{
			font-size: 16px;
			font-weight: bold;
			border-bottom: 2px solid #0088bb;
			margin-bottom: 10px;
		}
		#content .item li{
			display: inline;
			margin-right: 10px;
		}
		#content .item li a img{
			width: 230px;
			height: 230px;
			border:none;
		}
		#menu{
			position: fixed;
			top:100px;
			left: 50%;
			margin-left: 400px;
			width: 80px;
		}

		#menu ul li a{
			display: block;
			margin:5px 0;
			font-size: 14px;
			font-weight: bold;
			color: #333;
			width: 80px;
			height: 50px;
			line-height: 50px;
			text-decoration: none;
			text-align: center;
		}

		#menu ul li a:hover,
		#menu ul li a.current{
			color: #fff;
			background: #0088bb;
		}
	</style>
	<script src="https://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
	<script>
     //运用js原生代码

      //根据class name 获取元素
		function getByClassName(obj, cls){
			var elements = obj.getElementsByTagName("*");
			var result = [];
			for ( var i = 0;i< elements.length; i++) {
				if (elements[i].className == cls) {
					result.push(elements[i]);
				   }
			    }
			return result;
		}
			function hasClass( obj, cls){
				return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
			}

			function removeClass( obj , cls){
				if( hasClass( obj, cls )){
					//remove
					var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
					obj.className = obj.className.replace(reg, "");
				}

			}

			function addClass( obj , cls ){
				if( !hasClass( obj , cls)){
					obj.className += " " +cls;
				}
			}




        window.onload = function(){
            window.onscroll = function(){

			var top = document.documentElement?document.documentElement.scrollTop:document.body.scrollTop;

			var menus = document.getElementById("menu").getElementsByTagName("a");

			var items = getByClassName(document.getElementById("content"),"item");

			var currentId = "";

			for( var i=0; i< items.length; i++){
				var _item = items[i];
				var _itemTop = _item.offsetTop;
				if (top >_itemTop -200) {
					currentId = _item.id;
				}else{
					break;
				}
			}
			if (currentId) {
				//给正确的menu下的a元素class赋值
				for (var j = 0; j <menus.length; j++) {
					var _menu = menus[j];
					var _href = _menu.href.split("#");

					if( _href[_href.length - 1] != currentId ){
						removeClass(_menu, "current");
					} else{
						addClass(_menu, "current");
					}  
				}
			}
		}
}
	</script>
</head>
<body>
<div id="menu">
	<ul>
		<li><a href="#item1" class="current">1F 小猫</a></li>
		<li><a href="#item2">2F 小狗</a></li>
		<li><a href="#item3">3F 老虎</a></li>
		<li><a href="#item4">4F 狮子</a></li>
		<li><a href="#item5">5F 大象</a></li>
	</ul>
</div>
<div id="content">
	<h1>动物网</h1>

	<div id="item1" class="item">
	<h2>1F 小猫</h2>
	<ul>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
		<li><a href="#"><img src="1.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item2" class="item">
	<h2>2F 小狗</h2>
	<ul>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
		<li><a href="#"><img src="2.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item3" class="item">
	<h2>3F 老虎</h2>
	<ul>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
		<li><a href="#"><img src="3.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item4" class="item">
	<h2>4F 狮子</h2>
	<ul>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
		<li><a href="#"><img src="4.jpg" alt=""/></a></li>
	</ul>
</div>
<div id="item5" class="item">
	<h2>5F 大象</h2>
	<ul>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
		<li><a href="#"><img src="5.jpg" alt=""/></a></li>
	</ul>
</div>
</div>
</body>
</html>

 

 

实现效果如图:

 

 

 

这次学习的过程中遇到了很多的困难,因为是一个新手,对这些都不是特别的了解,之前有学习过Jquery,可是学的不是特别好,这次是一次很好的巩固。这次还运用了原生的JS来编写,获益匪浅。

下面是滚动的技术要点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值