jQuery 浮动导航菜单适合购物商品类型的网站


Posted in Javascript onSeptember 09, 2014

单页面网页内容较多,页面长度较大,需要方便快速的在页面的不同位置进行定位,所以浮动菜单逐渐流行了起来,如下图 男装、女装、美妆等。

jQuery 浮动导航菜单适合购物商品类型的网站

这种菜单功能分为两部分:

1、点击菜单项,网页滚动到对应位置,可简单通过锚点实现;

2、滚动页面的时候,菜单项的选中状态要跟着改变,这就需要监听网页的滚动事件并通过一点计算来实现了;

jQuery 浮动导航菜单适合购物商品类型的网站

计算 scrollTop 和 各个 div 的 offsetTop 的大小关系,判断现在网页显示的位置在什么地方,再根据计算的结果给对应的菜单项添加样式。比如第二个 div 的 offset().top = 300, 第三个 div 的offset().top = 600,此时的 scrollTop = 400,说明现在显示的大部分是第二个 div 的位置,700 则是第三个 div。下面是一个简单的例子:

<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="" alt=""/></a></li>
<!-- 若干个li -->
</ul>
</div>
<!-- 若干个item-->
</div>
* {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;left:50%;margin-left:400px;top:100px;}
#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;}
$(function(){
$(window).scroll(function(){
var scrollTop = $(document).scrollTop();
var contentItems = $("#content").find(".item");
var currentItem = "";
contentItems.each(function(){
var contentItem = $(this);
var offsetTop = contentItem.offset().top;
if(scrollTop > offsetTop-200){//此处的200视具体情况自行设定,因为如果不减去一个数值,在刚好滚动到一个div的边缘时,菜单的选中状态会出错,比如,页面刚好滚动到第一个div的底部的时候,页面已经显示出第二个div,而菜单中还是第一个选项处于选中状态
currentItem = "#" + contentItem.attr("id");
} 
});
if(currentItem&¤tItem!=$("#menu").find(".current").attr("href")){
$("#menu").find(".current").removeClass("current");
$("#menu").find("[href=" + currentItem + "]").addClass("current");
}
});
});
Javascript 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
JS解决ie6下png透明的方法实例
Aug 02 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
jQuery实现为控件添加水印文字效果(附源码)
Dec 02 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
JavaScript数组排序reverse()和sort()方法详解
Dec 24 Javascript
如何实现一个webpack模块解析器
Oct 24 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
微信小程序实现音乐播放器
Nov 20 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 Javascript
基于javascript实现日历功能原理及代码实例
May 07 Javascript
JavaScript中判断原生函数检查function是否是原生代码
Sep 09 #Javascript
三种取消选中单选框radio的方法
Sep 09 #Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 #Javascript
JQuery 给元素绑定click事件多次执行的解决方法
Sep 09 #Javascript
一个实用的图片切换支持点击切换和自动轮播
Sep 09 #Javascript
用JavaScript实现用一个DIV来包装文本元素节点
Sep 09 #Javascript
点击button获取text内容并改变样式的js实现
Sep 09 #Javascript
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
用PHP实现小型站点广告管理
2006/10/09 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php利用header函数下载各种文件
2016/08/24 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
德国家具在线:Fashion For Home
2017/03/11 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
2014年村官工作总结
2014/11/24 职场文书
现实表现材料范文
2014/12/23 职场文书
中秋晚会致辞
2015/07/31 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技