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 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
Oct 11 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
javascript实现的图片预览功能
Mar 25 Javascript
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
解决bootstrap-select 动态加载数据不显示的问题
Aug 10 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 Javascript
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 Vue.js
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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
精美漂亮的php分页类代码
2013/04/02 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python群发邮件实例代码
2014/01/03 Python
讲解Python中的递归函数
2015/04/27 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python匿名函数及应用示例
2019/04/09 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
汽车广告策划方案
2014/05/31 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
Python 如何安装Selenium
2021/05/06 Python