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 添加/移除CSS类实现代码
Feb 11 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
Jan 25 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
基于LayUI实现前端分页功能的方法
Jul 22 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
原生JS实现图片懒加载之页面性能优化
Apr 26 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
又一枚精彩的弹幕效果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
我的论坛源代码(七)
2006/10/09 PHP
一个SQL管理员的web接口
2006/10/09 PHP
Smarty安装配置方法
2008/04/10 PHP
paypal即时到账php实现代码
2010/11/28 PHP
PHP生成唯一订单号
2015/07/05 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python-for循环的内部机制
2020/06/12 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
毕业生找工作推荐信
2013/11/21 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
小学教师节活动总结
2015/03/20 职场文书