jQuery和CSS仿京东仿淘宝列表导航菜单


Posted in Javascript onJanuary 04, 2017

以前看着京东,淘宝的导航做的真好,真想哪一天自己也能做出来这么漂亮功能全的导航菜单。今天弄了一下午终于自制成功,主要使用jQuery和CSS,实现功能基本和京东一样。

功能介绍:

1、鼠标停留导航;

2、根据子列表的高度,自动调整对齐方式(顶端对齐/父类目对齐);

3、父子类目样式一致。

功能截图:

jQuery和CSS仿京东仿淘宝列表导航菜单

源代码:

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <meta name="keywords" content=" keywords" />
 <meta name="description" content="description" />
</head>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<style type="text/css">
 body{font-size:12px}
 ul,li{list-style-type:none;padding:0px}
 .menu{width:190px;border:solid 1px #E5D1A1;background-color:#FFFDD2}
 .optn{width:190px;line-height:28px;border-top:dashed 1px #ccc;z-index:100;position:relative}
 .content{padding-top:10px;clear:left}
 a{text-decoration:none;color:#666;padding:10px}
 .optnFocus{background-color:#fff;font-weight:bold}
 div{padding:10px}
 div img{float:left;padding-right:6px}
 span{padding-top:3px;font-size:14px;font-weight:bold;float:left}
 .tip{width:190px;position:absolute;padding:10px;display:none;}
 .tip li{line-height:23px}
 .focus{border:solid 1px red;background-color:#ccc}
 
</style>
<body>
<script type="text/javascript">
 $(function(){
 $('.optn').bind({mouseover:function(){
  var liTop = 12;
  var liLeft = $(this).offset().left+$(this).width();
  if(($(this).offset().top)>($(this).next('ul').height())){
  liTop = $(this).offset().top;
  }
  $(this).css('border-right','0');
  $(this).next('.tip').show().css({'left':liLeft+'px',top:liTop+'px'});
  $(this).addClass('focus');
  $(this).next('.tip').addClass('focus');
 },mouseout:function(){
  $(this).next('.tip').hide();
  $(this).removeClass('focus');
 }});
 });

</script>

<ul>
 <li class="menu">
 <div>
  <span>电脑数码产品</span>
 </div>
 <ul class="content">
  <li class="optn"><a href="#">笔记本</a></li>
  <ul class="tip">
  <li><a href="#">笔记本1</a></li>
  <li><a href="#">笔记本1</a></li>
  <li><a href="#">笔记本1</a></li>
  <li><a href="#">笔记本1</a></li>
  <li><a href="#">笔记本1</a></li>
  </ul><li class="optn"><a href="#">移动硬盘</a></li>
  <ul class="tip">
  <li><a href="#">移动硬盘1</a></li>
  <li><a href="#">移动硬盘1</a></li>
  <li><a href="#">移动硬盘1</a></li>
  <li><a href="#">移动硬盘1</a></li>
  <li><a href="#">移动硬盘1</a></li>
  </ul><li class="optn"><a href="#">电脑软件</a></li>
  <ul class="tip">
  <li><a href="#">电脑软件1</a></li>
  <li><a href="#">电脑软件1</a></li>
  <li><a href="#">电脑软件1</a></li>
  <li><a href="#">电脑软件1</a></li>
  <li><a href="#">电脑软件1</a></li>
  </ul><li class="optn"><a href="#">数码产品</a></li>
  <ul class="tip">
  <li><a href="#">数码产品1</a></li>
  <li><a href="#">数码产品1</a></li>
  <li><a href="#">数码产品1</a></li>
  <li><a href="#">数码产品1</a></li>
  <li><a href="#">数码产品1</a></li>
  </ul>
 </ul>
 </li>
</ul>
<span></span>
</body>
</html>

遇到的问题及解决办法:

1、鼠标指针位置获取:

a、function(e){alert(e.pageX);

alert(e.pageY);}//获取鼠标当前位置

b、获取元素的位置:   $(this).offset().top

$(this).offset().left//获取元素的位置

注:以上两种方法均在jQuery中适用,若使用JS中,需做适当改动

2、两个区块叠加时,边框处理问题:

需要的效果是:

jQuery和CSS仿京东仿淘宝列表导航菜单

但是现实的效果却是:

jQuery和CSS仿京东仿淘宝列表导航菜单

这个问题困扰了我半天,也在一个群里求救,一个好心的兄弟给我一段JS代码,结果我还是没用上,最后看了一个选项卡的实例,终于把这个问题搞定了。解决办法是:

人为加宽父菜单的宽度,然后把右边框设置成0,最后记得把父标签的放在最顶端显示

父菜单:

border-right:0;

z-index:100;

position:relative;

宽度覆盖子菜单

子菜单:

和父菜单背景色一样

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

Javascript 相关文章推荐
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
谈谈JavaScript中function多重理解
Aug 28 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
Aug 25 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
EasyUI Combobox设置默认值 获取text的方法
Nov 28 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
Sep 25 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
Jan 04 #Javascript
jQuery实现联动下拉列表查询框
Jan 04 #Javascript
JavaScript中String对象的方法介绍
Jan 04 #Javascript
js select下拉联动 更具级联性!
Apr 17 #Javascript
基于JavaScript实现熔岩灯效果导航菜单
Jan 04 #Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 #Javascript
jquery+ajax实现省市区三级联动效果简单示例
Jan 04 #Javascript
You might like
php文件上传表单摘自drupal的代码
2011/02/15 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
Destoon实现多表查询示例
2014/08/21 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
在Django框架中运行Python应用全攻略
2015/07/17 Python
django 消息框架 message使用详解
2019/07/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
DBA的职责都有哪些
2012/05/16 面试题
简历自荐信
2013/12/02 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
售后客服工作职责
2014/06/16 职场文书
新学期开学标语
2014/06/30 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书