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 相关文章推荐
一些不错的js函数ajax
Aug 20 Javascript
js检测浏览器版本、核心、是否移动端示例
Apr 24 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
理解javascript模块化
Mar 28 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
JavaScript  event对象整理及详细介绍
Oct 10 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
Feb 13 Javascript
详解Vue2.x-directive的学习笔记
Jul 17 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
JavaScript的一些小技巧分享
Jan 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
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
浅谈php://filter的妙用
2019/03/05 PHP
Javascript中的数学函数
2007/04/04 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
对于Python中线程问题的简单讲解
2015/04/03 Python
Python中__name__的使用实例
2015/04/14 Python
利用Python爬取可用的代理IP
2016/08/18 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
庆元旦文艺演出主持词
2014/03/27 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
年底个人总结范文
2015/03/10 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
教你nginx跳转配置的四种方式
2022/07/07 Servers