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的淡入淡出可自动切换的幻灯插件
Aug 24 Javascript
Javascript变量函数浅析
Sep 02 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
Dec 08 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
JavaScript表单焦点自动切换代码
Jul 24 Javascript
js数组去重的hash方法
Dec 22 Javascript
vue webpack打包优化操作技巧
Feb 22 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
php通过各种函数判断0和空
2020/07/04 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
js实现楼层导航功能
2017/02/23 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
实例讲解python函数式编程
2014/06/09 Python
python里大整数相乘相关技巧指南
2014/09/12 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
python写一个随机点名软件的实例
2019/11/28 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
Python 合并拼接字符串的方法
2020/07/28 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
收银员岗位职责
2014/02/07 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
求职简历自我评价范文
2015/03/10 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS