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 相关文章推荐
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
Sep 18 Javascript
javascript实现的左右无缝滚动效果
Sep 19 Javascript
详解JavaScript权威指南之对象
Sep 27 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
Oct 13 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
微信小程序常用简易小函数总结
Feb 01 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
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正则校验用户名介绍
2008/07/19 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
Python 爬虫图片简单实现
2017/06/01 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
简单实现python进度条脚本
2017/12/18 Python
python实现桌面托盘气泡提示
2019/07/29 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
初中生自我鉴定
2014/02/04 职场文书
《尊严》教学反思
2014/02/11 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
绿色小区申报材料
2014/08/22 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS