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网页关键字高亮代码
Jul 30 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
Node.js中使用jQuery的做法
Aug 17 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
AngularJS读取JSON及XML文件的方法示例
May 25 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
JavaScript利用键盘码控制div移动
Mar 19 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
重置版游戏视频
2020/04/09 魔兽争霸
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
页面使用密码保护代码
2013/04/10 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
javascript轮播图算法
2016/10/21 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
大学生实习思想汇报
2014/01/12 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
小学生获奖感言范文
2014/02/02 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript