模拟天猫--网页定位导航效果

来源:互联网 发布:lol网络关注 编辑:程序博客网 时间:2024/05/16 14:11

分为左右两部分

左侧内容,右侧炫富的导航菜单

左侧滚动时,右侧内容不改变位置

点击右侧链接,左侧定位到相应栏目

左侧滚动到相应栏目,右侧定位到对应链接

锚点(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 iditems.each(function(){var m=$(this);var itemTop=m.offset().top;if(top>itemTop-300){currentId="#"+m.attr("id");}else{return false;}});//给相应楼层的a设置current,取消其他链接的currentvar 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.onload=function(){window.onscroll=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>


原创粉丝点击