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 sudoku 数独智力游戏生成代码
Mar 27 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
Sep 19 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
TS 类型收窄教程示例详解
Sep 23 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提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
初识PHP
2014/09/28 PHP
php事件驱动化设计详解
2016/11/10 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
用python删除java文件头上版权信息的方法
2014/07/31 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Python 占位符的使用方法详解
2019/07/10 Python
Python csv模块使用方法代码实例
2019/08/29 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
数学教学随笔感言
2014/02/17 职场文书
2014年冬季防火方案
2014/05/21 职场文书
会计专业自荐信
2014/06/03 职场文书
初中学校对照检查材料
2014/08/19 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
政风行风评议心得体会
2014/10/21 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
深入浅析Django MTV模式
2021/09/04 Python