jQuery实现级联菜单效果(仿淘宝首页菜单动画)


Posted in Javascript onApril 10, 2014

相信初学HTM+DIV+CSSl的同学们肯定也想做出淘宝网首页的菜单动画吧。今天我们就带大家体会一下级联菜单的显示。小编我只是实现了简单地效果,不过总体来说原理是一样的哦,那么先让大家看看效果图吧。

那么要实现这个效果我们当然要使用到的是jQuery,那么我就开始讲解怎么做的了,先上html和css的代码

<!DOCTYPE html> 
<html> 
<head> 
<title>menu.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="this is my page"> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<link rel="stylesheet" type="text/css" href="../css/menu.css"> 
<script type="text/javascript" src="../js/jquery-1.10.2.js"></script> 
<script type="text/javascript" src="../js/menu.js"></script> 
</head> 
<body> 
<ul> 
<li class="menu"> 
<div class="title"> 
<span>电脑数码类产品</span> 
</div> 
<ul class="content"> 
<li class="optn"><a href="#">笔记本</a> 
<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> 
</ul> 
</li> 
<li class="optn"><a href="#">移动硬盘</a> 
<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> 
</ul> 
</li> 
<li class="optn"><a href="#">电脑软件</a> 
<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> 
</ul> 
</li> 
<li class="optn"><a href="#">数码产品</a> 
<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> 
</ul> 
</li> 
</ul> 
</li> 
</ul> 
</body> 
</html>

menu.css
@CHARSET "UTF-8"; *{ 
margin: 0px; 
padding: 0px; 
} 
ul,li{ 
list-style-type: none; 
} 
.menu{ 
width: 190px; 
border: 1px red solid; 
background-color: #fffdd2; 
} 
.optn{ 
width: 190px; 
line-height: 28px; 
border-top: 1px red dashed; 
} 

.content{ 
padding-top:10px; 
clear: left; 
} 

a{ 
text-decoration: none; 
color: #666; 
padding: 10px; 
} 
.optnFocus{ 
background-color: #fff; 
font-weight: bold; 
} 
div{ 
padding: 10px; 
} 
.tip{ 
width: 190px; 
border: 2px red solid; 
position: absolute; 
background-color: #fff; 
display: none; 
} 
.tip li{ 
line-height: 23px; 
}

接下来就是主要的jquery代码:menu.js
$(function(){ var curY;//获取所选想的TOP 
var curH;//获取所选的Height 
var curW;//获取所选的width 
var objL;//获取当前对象 
//自定义函数用于获取当前位置 
function setInitValue(obj){ 
curY=obj.offset().top; 
curH=obj.height(); 
curW=obj.width(); 
} 
//设置当前所选项的鼠标滑动事件 
$(".optn").mouseover(function(){ 
objL=$(this);//获取当前对象 
setInitValue(objL); 
var allY=curY-curH +"px"; 
objL.addClass("optnFocus"); 
//获取气元素下的下一个ul 
$(".tip",this).show().css({"top":allY,"left":curW});; 
}); 
$(".optn").mouseout(function(){ 
$(this).removeClass("optnFocus"); 
$(".tip",this).hide(); 
}); 
//为了防止移到子菜单时子菜单不见,我们也要为子菜单设置鼠标事件 
$(".tip").mouseover(function(){ 
$(this).show(); 
objL=$(this).prev("li"); 
setInitValue(objL); 
objL.addClass("optnFocus"); 
}); 
$(".tip").mouseout(function(){ 
$(this).hide(); 
$(this).prev("li").removeClass("optnFocus"); 
}); 
});

注意要点:

1.由于我们用的是较高版本的jquery文件库,所以有些方法是不支持的,例如获取下一个元素的第一个子元素next(erp),在10.1中是不支持的,所以我换了一种方法$(chiled,select),表示在select的范围进行元素的选择

2.整个效果的实现我们还要为子选项框绑定鼠标事件,目的就是为了不在我们移动到子选项卡中,突然消失。

要实现好看的效果就需要加一些图片和样式,不过原理是一样的哦

Javascript 相关文章推荐
实例:用 JavaScript 来操作字符串(一些字符串函数)
Feb 15 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
最简单的JavaScript图片轮播代码(两种方法)
Dec 18 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
Jul 21 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
mpvue跳转页面及注意事项
Aug 03 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
js获取视频时长代码
Apr 10 #Javascript
js转化毫秒为时间格式代码
Apr 10 #Javascript
jquery移除、绑定、触发元素事件使用示例详解
Apr 10 #Javascript
jquery序列化表单去除指定元素示例代码
Apr 10 #Javascript
jquery删除ID为sNews的tr元素的内容
Apr 10 #Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 #Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 #Javascript
You might like
一个php作的文本留言本的例子(三)
2006/10/09 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP数组函数知识汇总
2016/05/12 PHP
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
react基本安装与测试示例
2020/04/27 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
python uuid模块使用实例
2015/04/08 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
利用python求相邻数的方法示例
2017/08/18 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
详解Python3定时器任务代码
2019/09/23 Python
Python @property装饰器原理解析
2020/01/22 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
购房委托书
2014/10/15 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL