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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
Bootstrap模态对话框的简单使用
Apr 29 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
axios基本入门用法教程
Mar 25 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
脚本收藏iframe
2006/07/21 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
Django 视图层(view)的使用
2018/11/09 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
django 控制页面跳转的例子
2019/08/06 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python如何输出整数
2020/06/07 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
煤矿安全协议书
2014/08/20 职场文书
初中差生评语
2014/12/29 职场文书
辞职信格式模板
2015/02/27 职场文书
老乡聚会通知
2015/04/23 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
2015中秋祝酒词
2015/08/12 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript