javascript网页定位导航的实现

本文针对网页定位导航,用javascript进行效果实现。本文是慕课网的一个练习题,程序中,我注释掉的部分是其中的例题代码,我没有调通或者是根本没有必要那么写。

还有例题中用window.load来加载函数,不能实时刷新网页来进行显示,当滚动条滑动时需要刷新一下页面才能看到效果,所以我不其删掉,用定时器setInterval来控制,动作实时刷新

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网页定位导航</title>

<style>
	*{
	margin: 0px;
	padding: 0px;
	}
	body{
		font-size:12px;
		line-height:1.7;
		}
	li{
		list-style:none;
		}
	#content{
		width:800px;
		margin:0 auto;
		padding:20px;
		}
	#content h1{
		color:#399;
		}
	#content .item{
		padding:20px;
		margin-bottom:20px;
		border:1px dotted #08b;
		}
	#content .item h2{
		font-size:16px;
		font-weight:bold;
		border-bottom:1px solid #08b;
		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;
		}
	#menu ul li a:hover,
	#menu ul li a.current{
		background-color:#08b;
		color:#FFF;}
</style>
<script>
	//因为IE浏览器没有getElementsByClassName,所以需要自己写一个方法来代替
	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;
		}
	//这一部分没有必要,下文直接可以用className代替即可。
	/*function hasClass(obj,cls){
		return obj.className.match(new RegExp("(\\s|^)"+cls+"(\\s|$)"))
		}
	function removeClass(obj,cls){
		if(hasClass(obj,cls)){
			var reg = new RegExp("(\\s|^)"+cls+"(\\s|$)");
			obj.className.replace(reg,"");
			}
		}

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

	/*window.onload =*/ function show(){
		//var top = document.documentElement?document.documentElement.scrollTop:document.body.scrollTop;
		var top = document.documentElement.scrollTop|document.body.scrollTop;
		var menus = document.getElementById("menu").getElementsByTagName("a");
		var items = getByClassName(document.getElementById("content"),"item");
		var cirrentId = "";
		for(var i = 0;i<items.length;i++){
			var _item = items[i];
			var _itemtop = _item.offsetTop;
			if(top>_itemtop-300){
				currentId = _item.id;
				}
			else{
				break;
				}

			}
		if(currentId){
			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");
					_menu.className = "";
					}
				else{
					//addClass(_menu,"current");
					_menu.className = "current";
					}
				}
			}
	}
	setInterval(show,1);
</script>
</head>

<body>
<div id="menu">
	<ul>
    	<li><a href="#item1" class="current">1F 男装</a>
        <li><a href="#item2" class="">2F 女装</a>
        <li><a href="#item3">3F 美妆</a>
        <li><a href="#item4">4F 数码</a>
        <li><a href="#item5">5F 母婴</a>
    </ul>
</div>
<div id="content">
	<h1>天狗购物</h1>
    <div id="item1" class="item">
    	<h2 >1F 男装</h2>
        <ul>
    	<li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
        <li><a href="#"><img src="1.jpg"></a>
    </ul>
    </div>
    <div id="item2" class="item">
    	<h2>2F 女装</h2>
        <ul>
    	<li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
    </ul>
    </div>
    <div id="item3" class="item">
    	<h2>3F 美妆</h2>
        <ul>
    	<li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
        <li><a href="#"><img src="3.jpg"></a>
    </ul>
    </div><div id="item4" class="item">
    	<h2>4F 数码</h2>
        <ul>
    	<li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
    </ul>
    </div>
    <div id="item5" class="item">
    	<h2>5F 母婴</h2>
        <ul>
    	<li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
        <li><a href="#"><img src="2.jpg"></a>
    </ul>
    </div>
</div>
</body>
</html>

显示效果图,只展示了开始的一部分内容,图片我是随便找的,只是为了掩饰效果

时间: 2024-11-05 13:30:26

javascript网页定位导航的实现的相关文章

网页定位导航特效

最近在学习慕课网-网页定位导航特效的课程,这个算是学习完成的经验总结吧.通过学习这一课,get了以下几个小技巧. css小技巧:在content的右边设置一个fixed的菜单该如何定位?先设定左边定位50%,然后设定向右偏移400px,这样就位于content的正右边了. 导航与滚动条之间的关系,我实在不能讲得更好了,直接盗老师的图好了. 其实就是比较向上滚动的距离与每个楼层之间的距离,如果该楼层已经滚了上去,那就可以设置为焦点. 我实在解释不清了,不知以后我自己看能不能看懂了.啥也不说了,直接

JQuery实现网页定位导航特效

慕课网的一个小课程,练习了一遍,不足之处,欢迎指正(照片在本地,大家可以着重看代码哈),想看demo的同学可以点击如下地址:https://iceflorenceice.github.io/: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>爱淘气购物网-JQ网页定位导航特效</title> <st

网页定位导航

<style> #header{height:50px; } #siderList{position: fixed; right:0; bottom: 20%;} #siderList li{margin-bottom: 5px; list-style: none;} #siderList li a{display: inline-block; width: 50px; height: 50px; background: #32B981; text-align: center; color:

慕课网中网页定位导航中js相关问题总结

1.js中ie8及以下浏览器不支持getElementsByClassName, (1)JS原生代码里addClass添加类,要带空格 举例子 : <div class="item1 item2"> </div> 上面是一个div,这个div的样式已经有两个,所以你再添加class的时候就需要加空格后再加入新的样式. 最后得到: <div class="item1 item2 new"> </div> (2)移除类:不

网页定位 - 右侧导航栏效果

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>网页定位导航效果</title> 6 <style> 7 *{ 8 margin: 0; 9 padding: 0; 10 } 11 12 body{ 13 font-size: 12px; 14 line-height: 1

JavaScript定位导航滚动2

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>网页定位导航效果</title> <style type="text/css"> *{ margin: 0; padding: 0; } body{ font-size: 12px; line-height: 1.7; } l

定位导航

<!DOCTYPE html><html><head><meta charset="gb2312"/><title>网页定位导航效果</title><style>        * {            margin: 0;            padding: 0;            font-family:"微软雅黑"        } body {          

页面定位导航滚动插件

今天做页面定位导航时踩到一坑,由于页面顶部有一个fixed的导航条,所以用直接用锚点效果不好.所以打算用js来实现,顺便还有滚动的效果.昨晚做的时候想的是直接把tag设定为固定的值,但是睡觉前在平板上查看网页的时候发现,响应式布局,放到平板上top值就变了.所以今天起床又开始鼓捣这只小虫. 使用了jquery,然后滚动函数中使用jq来设定值,本来打算找到id后用 offset().top 加减一个差值就可以定位到我想要的位置.但是,在不同浏览器中obj.offset().top的值不一样,并且,

5月9日上课笔记-网页定位、网页动画【HTML5】

一.网页定位 position: static (默认值) relative 相对定位(相对原来的位置) right left botton top absolute 绝对定位 fixed: 固定定位 (相对浏览器窗口) z-index 定位时,重叠层上下位置 二.网页动画 变形函数: transform: translate(平移函数 x,y平移) translateX translateY scale(2,2); 宽度,高度 skew(10deg,10deg); 倾斜 rotate 2D旋转