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 相关文章推荐
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
AngularJS语法详解
Jan 23 Javascript
js实现自动轮换选项卡
Jan 13 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 Javascript
代码分析vue中如何配置less
Sep 28 Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
Feb 06 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字符串函数的总结分析
2013/06/05 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
解决Mac node版本升级失败的问题
2018/05/16 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
Python 如何批量更新已安装的库
2020/05/26 Python
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
售后客服工作职责
2014/06/16 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
学校端午节活动方案
2014/08/23 职场文书
作风大整顿心得体会
2014/09/10 职场文书
银行先进个人总结
2015/02/15 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android