分爲左右兩部分
左側內容,右側炫富的導航菜單
左側滾動時,右側內容不改變位置
點擊右側鏈接,左側定位到相應欄目
左側滾動到相應欄目,右側定位到對應鏈接
錨點(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>