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 要点归纳(一) jQuery选择器
Mar 21 Javascript
网页打开自动最大化的js代码
Aug 22 Javascript
javascript实现回到顶部特效
May 06 Javascript
javascript跨域的方法汇总
Oct 23 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
详解http访问解析流程原理
Oct 18 Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 Javascript
Nuxt配合Node在实际生产中的应用详解
Aug 07 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
Nov 05 Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 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 开源框架22个简单简介
2009/08/24 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
深入理解Antd-Select组件的用法
2020/02/25 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python实现基于SVM手写数字识别功能
2020/05/27 Python
详解python 中in 的 用法
2019/12/12 Python
利用python画出AUC曲线的实例
2020/02/28 Python
python numpy实现rolling滚动案例
2020/06/08 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
学生自我鉴定范文
2013/10/04 职场文书
高级护理专业大学生求职信
2013/10/24 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
汽车维修求职信
2014/06/15 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
城管年度个人总结
2015/02/28 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
Java对文件的读写操作方法
2022/04/29 Java/Android
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS