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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 Javascript
canvas时钟效果
Feb 16 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
Angularjs按需查询实例代码
Oct 30 Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
javascript的this关键字详解
May 20 Javascript
Vue-CLI与Vuex使用方法实例分析
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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
纺织工程专业个人求职信范文
2014/01/27 职场文书
机关出纳岗位职责
2014/04/03 职场文书
企业金融服务方案
2014/06/03 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python