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 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
jquery 简单应用示例总结
Aug 09 Javascript
button没写type=button会导致点击时提交
Mar 06 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
Angular实现的进度条功能示例
Feb 18 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
Vue.js实现可编辑的表格
Dec 11 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP教程 变量定义
2009/10/23 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
用python 制作图片转pdf工具
2015/01/30 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
高中毕业自我评价
2014/02/08 职场文书
安踏广告词改编版
2014/03/21 职场文书
工商干部先进事迹
2014/05/14 职场文书
课外活动总结范文
2014/07/09 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
退休欢送会主持词
2015/07/01 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js