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 相关文章推荐
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
Bootstrap每天必学之轮播(Carousel)插件
Apr 25 Javascript
H5移动端图片压缩上传开发流程
Nov 09 Javascript
jQuery删除当前节点元素
Dec 07 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
在vue中使用jsx语法的使用方法
Sep 30 Javascript
JavaScript 实现同时选取多个时间段的方法
Oct 17 Javascript
jquery实现直播弹幕效果
Nov 28 jQuery
ElementUI Tree 树形控件的使用并给节点添加图标
Feb 27 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
js基于div丝滑实现贝塞尔曲线
Sep 23 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python实现从百度API获取天气的方法
2015/03/11 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
有趣的python小程序分享
2017/12/05 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python pytest进阶之fixture详解
2019/06/27 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
python软件都是免费的吗
2020/06/18 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
大学生简历中个人的自我评价
2013/10/06 职场文书
绩效专员岗位职责
2013/12/02 职场文书
小学开学典礼主持词
2014/03/19 职场文书
求职简历自荐信
2014/06/18 职场文书
高中学校对照检查材料
2014/08/31 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python