模擬天貓--網頁定位導航效果

分爲左右兩部分

左側內容,右側炫富的導航菜單

左側滾動時,右側內容不改變位置

點擊右側鏈接,左側定位到相應欄目

左側滾動到相應欄目,右側定位到對應鏈接

錨點(anchor):錨點是網頁製作中超鏈接的一種,又叫命名錨記。錨點是一種頁面內的超級鏈接

jQuery事件:

1、scroll([data],fn):當用戶滾動指定的元素時,會發生scroll事件適用於所有可滾動的元素和window對象(瀏覽器窗口)。例如當頁面滾動條發生變化時執行函數:

$(window).scroll(function(){/*........*/});

2、scrollTop([val]):獲取/設置匹配元素相對滾動條頂部的偏移

3、offset():獲取匹配元素的相對偏移。返回的對象包含兩個整型屬性:top和left,以像素計。

<!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: 50px; }
        #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; }
		/* ie6 hack */
        * html, * html body { background-image: url(about:blank); background-attachment: fixed; }
        * html #menu { /* position: fixed; */ position: absolute; bottom: auto; top: expression(100+((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+'px'); }
    </style>
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
	<script type="text/javascript">
		$(document).ready(function(){
			$(window).scroll(function(){
				var menu=$("#menu");
				var items=$("#content").find(".item");
				var top=$(document).scrollTop();
				var currentId="";//滾動條現在所在位置的item id
				items.each(function(){
					var m=$(this);
					var itemTop=m.offset().top;
					if(top>itemTop-300){
						currentId="#"+m.attr("id");
					}else{
						return false;
					}
				});
				//給相應樓層的a設置current,取消其他鏈接的current
				var currentLink=menu.find(".current");
				if(currentId&¤tLink.attr("href")!=currentId){
					currentLink.removeClass("current");
					menu.find("[href="+currentId+"]").addClass("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="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="1F.jpg" alt=""/></a></li>
        </ul>
    </div>
    <div id="item2" class="item">
        <h2>2F 女裝</h2>
        <ul>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="2F.jpg" alt=""/></a></li>
        </ul>
    </div>
    <div id="item3" class="item">
        <h2>3F 美妝</h2>
        <ul>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="3F.jpg" alt=""/></a></li>
        </ul>
    </div>
    <div id="item4" class="item">
        <h2>4F 數碼</h2>
        <ul>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
            <li><a href="#"><img src="4F.png" alt=""/></a></li>
        </ul>
    </div>
    <div id="item5" class="item">
        <h2>5F 母嬰</h2>
        <ul>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
            <li><a href="#"><img src="5F.jpg" alt=""/></a></li>
        </ul>
    </div>
</div>
</body>
</html>

js實現

<script type="text/javascript">
	//根據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)){
            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.οnlοad=function(){
		window.οnscrοll=function(){
			var top = 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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章