JQuery实现绚丽的横向下拉菜单


Posted in Javascript onDecember 19, 2013

以前经常看见网站有菜单的显示,鼠标移上去就出现下拉的效果,很绚丽,经过看JQuery视频后,发现实现也挺容易的。
JQuery实现绚丽的横向下拉菜单 
Html中,通过<ul>和<li>标签将所需的元素写出来。 

<body> 
<ul> 
<li class="hmain"> 
<a href="#">菜单项1</a> 
<ul> 
<li> 
<a href="#"> 子菜单项11</a> 
</li> 
<li> 
<a href="#">子菜单项12</a> 
</li> 
</ul> 
</li> 
<li class="hmain"> 
<a href="#">菜单项2</a> 
<ul> 
<li> 
<a href="#">子菜单项21</a> 
</li> 
<li> 
<a href="#">子菜单项22</a> 
</li> 
</ul> 
</li> 
<li class="hmain"> 
<a href="#">菜单项3</a> 
<ul> 
<li> 
<a href="#">子菜单项31</a> 
</li> 
<li> 
<a href="#">子菜单项32</a> 
</li> 
</ul> 
</li> 
</ul> 
</body>

最外围的<ul>中元素<li>即为菜单项1、菜单项2、菜单项3,下拉菜单分别在各主菜单之下,如果菜单最外层为ul,一层每个主菜单放在一个li中,如果有子菜单,在这个主菜单的li中建立新的ul,再依次嵌套即可构建多层的菜单。

CSS中

ul,li{ 
/*清除ul和li上的小圆点*/ 
list-style:none; 
} 
ul{ 
/*清除子菜单的缩进值*/ 
padding:0; 
margin:0; } 
.hmain{ 
background-image:url(../images/title.gif); //前面的小三角 
background-repeat:repeat-x; 
width:120px; 
} 
li{ 
background-color:#EEEEEE; //背景图片覆盖背景色 
} 
a{ 
//取消所有的下划线 
text-decoration:none; 
padding-left:20px; 
display:block; /*块集元素可充满区域*/ 
display:inline-block; 
width:100px; 
padding-top:3px; 
padding-bottom:3px; 
} 
.hmain a{ 
color:white; 
background-image:url(../images/collapsed.gif); 
background-repeat:no-repeat; 
background-position:3px center; 
} 
.hmain li a{ 
color:black; 
background-image:none; 
} 
.hmain ul{ 
display:none; 
} 
.hmain{ 
float:left; 
margin-right:1px; 
}<strong> 
</strong>

Html中引用js文件jquery.js和menu.js,其中menu.js如下:
$(document).ready(function(){ 
//页面中的DOM已经装载完成时,执行的代码 
$(".main> a,.hmain a").click(function(){ 
//找到主菜单项对应的子菜单项 
var ulNode=$(this).next("ul"); 
ulNode.slideToggle(); 
changeIcon($(this)); 
}); 
$(".hmain").hover(function(){ 
$(this).children ("ul").slideToggle(); 
changeIcon($(this).children("a")); 
},function(){ 
$(this).children("ul").slideToggle(); 
changeIcon($(this).children("a")); 
}); 
}); 
/* 
*修改主菜单的指示图标 
*/ 
function changeIcon(mainNode){ 
if(mainNode){ 
if(mainNode.css("background-image").indexOf("collapsed.gif")>=0){ 
mainNode.css("background-image","url('images/expanded.gif')"); 
}else{ 
mainNode.css("background-image","url('images/collapsed.gif')"); 
} 
} 
}

这样绚丽的下拉菜单就完成了。实现很简单,不过里面的小知识点很零碎。例如:.main a和.main>a的不同之处,前者选择使用.main的这个class的元素内容所有的a节点,后者只选择.main的子节点中的a节点。

这样的例子应用性很强,在网站中使用让界面显得更加的美观,例子才看3个,抓紧时间继续看...

Javascript 相关文章推荐
javascript脚本调试方法小结
Nov 24 Javascript
js sort 二维数组排序的用法小结
Jan 24 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
Sep 04 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 #Javascript
js获取select选中的option的text示例代码
Dec 19 #Javascript
js 高效去除数组重复元素示例代码
Dec 19 #Javascript
无闪烁更新网页内容JS实现
Dec 19 #Javascript
javascript中字符串的定义示例代码
Dec 19 #Javascript
javascript中typeof的使用示例
Dec 19 #Javascript
javascript中普通函数的使用介绍
Dec 19 #Javascript
You might like
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
JavaScript静态的动态
2006/09/18 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
python 利用zmail库发送邮件
2020/09/11 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
临床医学系毕业生推荐信
2013/11/09 职场文书
2015年学校体育工作总结
2015/04/22 职场文书