模拟天猫--网页定位导航效果
来源:互联网 发布: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>
阅读全文
0 0
- 模拟天猫--网页定位导航效果
- jquery左侧导航滑动网页定位效果
- [实例]网页定位导航
- 网页定位导航
- 网页定位导航
- 网页定位导航特效
- jquery实现网页定位导航
- 网页定位导航特效制作
- 代码笔记 | 定位导航效果
- jquery实现定位导航效果
- 20150805 (网页定位导航+瀑布流布局+信息排列)JS+JQuery+CSS3效果实现笔记
- jquery模拟导航栏效果
- javascript网页定位导航的实现
- 网页定位导航特效的实现
- 使用jQuery实现网页定位导航
- 使用原生JavaScript实现网页定位导航
- 网页定位导航特效--jQuery学习
- imooc 网页定位导航特效 练习
- 自定义控件三部曲之动画篇(八)——PropertyValuesHolder与Keyframe
- (贪心)Codeforces Round #427 B. The number on the board
- Light oj 1104 Birthday Paradox 生日悖论-雀巢原理
- HDU 6040 Hints of sd0061 找第K大数 (nth_element函数)
- js里添加html调用function参数问题
- 模拟天猫--网页定位导航效果
- Linux中三种网络模式是什么意思——NAT(二地址转换模式)
- CodeForces 803C
- LeetCode -- 198. House Robber
- PHP与表单的简单应用
- Python3之内置函数
- 自定义控件三部曲之动画篇(九)——联合动画的代码实现
- 2017华为机试(仿LISP字符串运算)
- C++中的const声明