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 相关文章推荐
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
Js callBack 返回前一页的js方法
Nov 30 Javascript
关于 文本框默认值 的操作js代码
Jan 12 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
Mar 05 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 Javascript
js中实现继承的五种方法
Jan 25 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
php轻松实现文件上传功能
2016/03/03 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
初始Nodejs
2014/11/08 NodeJs
基于jQuery实现下拉框
2014/11/24 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
Python和Bash结合在一起的方法
2020/11/13 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
python字典与json转换的方法总结
2020/12/28 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
纪检干部对照检查材料
2014/08/22 职场文书
redis限流的实际应用
2021/04/24 Redis
Python使用UDP实现720p视频传输的操作
2021/04/24 Python