jQuery仿京东商城楼梯式导航定位菜单


Posted in Javascript onJuly 25, 2016

实现京东商城楼梯式导航定位菜单:滚动定位菜单项和点击定位菜单项!

jQuery仿京东商城楼梯式导航定位菜单

涉及知识点:find()、parent()、offset()、scroll()等jQ函数,请自觉复习各种函数!

html代码:

<!-- 导航菜单 -->
 <div id="menu">
  <ul>
   <li>1F<span>服饰</span></li>
   <li>2F<span>美妆</span></li>
   <li>3F<span>手机</span></li>
   <li>4F<span>家电</span></li>
   <li>5F<span>数码</span></li>
   <li>6F<span>运动</span></li>
   <li>7F<span>居家</span></li>
   <li>8F<span>母婴</span></li>
   <li>9F<span>食品</span></li>
   <li>10F<span>图书</span></li>
   <li>11F<span>服务</span></li>
  </ul>
 </div>
 <!-- 导航菜单 -->
 <!-- 产品内容 -->
 <div id="content">
  <img src="images/head.png" alt="" style="border:1px solid red;">
  <div class="louti" id="louti1"><img src="images/f1.png" alt=""></div>
  <div class="louti" id="louti2"><img src="images/f2.png" alt=""></div>
  <div class="louti" id="louti3"><img src="images/f3.png" alt=""></div>
  <div class="louti" id="louti4"><img src="images/f4.png" alt=""></div>
  <div class="louti" id="louti5"><img src="images/f5.png" alt=""></div>
  <div class="louti" id="louti6"><img src="images/f6.png" alt=""></div>
  <div class="louti" id="louti7"><img src="images/f7.png" alt=""></div>
  <div class="louti" id="louti8"><img src="images/f8.png" alt=""></div>
  <div class="louti" id="louti9"><img src="images/f9.png" alt=""></div>
  <div class="louti" id="louti10"><img src="images/f10.png" alt=""></div>
  <div class="louti" id="louti11"><img src="images/f11.png" alt=""></div>
 </div>
 <!-- 产品内容 -->
 <!-- 底部 -->
 <div id="footer" class="container"></div>

css代码:

#menu{
  width:32px;height:360px;
  position:fixed;
  top:200px;left:0px;
  display: none;
 }
 #menu ul li{
  width:32px;height:32px;
  list-style-type:none;
  color:#8F8583;
  text-align:center;
  line-height: 32px;
  border-bottom:1px dotted #ddd;
  position:relative;
 }
 #menu ul li span{
  display:block;width:32px;height:32px;
  background:#C81623;
  position:absolute;
  top:0;left:0;
  color:#fff;font-size:12px;
  display: none;
 }
 #menu ul li:hover span{display:block; }
 #menu ul li span.active{color:#C81623;background:#fff;display:block;}
 #content{
  width:1220px;
  margin:0 auto;
 } 
 #footer{width:1220px;height:600px;background:#FE7678;}
 .container{margin:0 auto;}

jQuery代码:

$(function(){
  var _index=0;
  $("#menu ul li").click(function(){
   $(this).find("span").addClass("active").parent().siblings().find("span").removeClass("active");
   _index=$(this).index()+1;
   //通过拼接字符串获取元素,再取得相对于文档的高度
   var _top=$("#louti"+_index).offset().top;
   //scrollTop滚动到对应高度
   $("body,html").animate({scrollTop:_top},500);
  });
  var nav=$("#menu"); //得到导航对象
  var win=$(window); //得到窗口对象
  var sc=$(document);//得到document文档对象。
  win.scroll(function(){

   if(sc.scrollTop()>=600){
   $("#menu").show(); 
   //获取滚动元素对应的索引!!!重难点
   var index=Math.floor(sc.scrollTop()/600);

   $("#menu ul li span").eq(index-1).addClass("active").parent().siblings().find("span").removeClass("active");
   }else{
   $("#menu").hide();
   }
  });
 });

滚动中常用到的jQ写法:

 $("body,html").animate({scrollTop:_top},500);

总结:相对来说,这是个蛮有趣的实践案例,但其中用到比较多的函数,结合了本案例比较特殊的html结构设计,需要理清滚动导航时候的条件判断。 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
Javascript实现简单的富文本编辑器附演示
Jun 16 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
Node.js创建Web、TCP服务器
Dec 05 Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 Javascript
vue使用Font Awesome的方法步骤
Feb 26 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 #Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 #Javascript
前端微信支付js代码
Jul 25 #Javascript
javascript与jquery动态创建html元素示例
Jul 25 #Javascript
jquery siblings获取同辈元素用法实例分析
Jul 25 #Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 #Javascript
js微信分享API
Oct 11 #Javascript
You might like
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
javascript中对对层的控制
2006/12/29 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
解决python中 f.write写入中文出错的问题
2018/10/31 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python web框架中实现原生分页
2019/09/08 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
python中四舍五入的正确打开方式
2021/01/18 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
幼师小班个人总结
2015/02/12 职场文书
工作时间调整通知
2015/04/24 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
校运会通讯稿
2015/07/18 职场文书
终止合同协议书范本
2016/03/22 职场文书
Python面向对象编程之类的概念
2021/11/01 Python