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 相关文章推荐
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 Javascript
jQuery 快速结束当前正在执行的动画
Nov 20 Javascript
带左右箭头图片轮播的JS代码
Dec 18 Javascript
javascript 小数取整简单实现方式
May 30 Javascript
JavaScript生成随机数的4种自定义函数分享
Feb 28 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
Jun 11 Javascript
javascript创建函数的20种方式汇总
Jun 23 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 Javascript
JavaScript实现动态留言板
Mar 16 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
网站当前的在线人数
2006/10/09 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python3 socket同步通信简单示例
2017/06/07 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Django模板Templates使用方法详解
2019/07/19 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
德国高性价比网上药店:medpex
2017/07/09 全球购物
新员工考核评语
2014/12/31 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python