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 相关文章推荐
jQuery Dialog 弹出层对话框插件
Aug 09 Javascript
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
Feb 19 Javascript
JavaScript学习笔记之Function对象
Jan 22 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
Vue跨域请求问题解决方案过程解析
Aug 07 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
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
js取float型小数点后两位数的方法
2014/01/18 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python抓取网页内容示例分享
2014/02/24 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
Python遍历pandas数据方法总结
2018/02/09 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Django如何将URL映射到视图
2019/07/29 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
keras中的backend.clip用法
2020/05/22 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
聊聊python中的异常嵌套
2020/09/01 Python
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
文秘专业个人求职信
2013/12/22 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
Win10 Anaconda安装python-pcl
2022/04/29 Servers