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 相关文章推荐
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
js控制表单奇偶行样式的简单方法
Jul 31 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
jQuery插件简单实现方法
Jul 18 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 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
php巧获服务器端信息
2006/12/06 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
js回调函数仿360开机
2019/12/26 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
transform python环境快速配置方法
2018/09/27 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
介绍一下linux文件系统分配策略
2013/02/25 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
九年级历史教学反思
2014/01/27 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
golang定时器
2022/04/14 Golang