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 相关文章推荐
JavaScript面象对象设计
Apr 28 Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
Feb 24 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
如何在Node和浏览器控制台中打印彩色文字
Jan 09 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
PHP的FTP学习(四)
2006/10/09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
django加载本地html的方法
2018/05/27 Python
python集合是否可变总结
2019/06/20 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Joules美国官网:出色的英国风格
2017/10/30 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
计算机相关的自我评价
2014/01/15 职场文书
英语自我评价范文
2014/01/24 职场文书
元旦晚会感言
2014/03/12 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
西岭雪山导游词
2015/02/06 职场文书
会计工作能力自我评价
2015/03/05 职场文书
聚会通知怎么写
2015/04/23 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
详解JS数组方法
2021/11/20 Javascript