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 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
jQuery控制TR显示隐藏的三种常用方法
Aug 21 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
第一篇初识bootstrap
Jun 21 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
Vue2.X 通过AJAX动态更新数据
Jul 17 Javascript
vue动态设置img的src路径实例
Sep 18 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
vue实现简单的登录弹出框
Oct 26 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
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
实习自我鉴定范文
2013/10/30 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
Golang ort 中的sortInts 方法
2022/04/24 Golang