主要是利用jQuery来实现垂直菜单和水平菜单。实现效果如图:

第一步,创建一个HTML文件,如图,包含两个ul。当然把jquery库也引入进去了。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script type="text/javascript" src="jquery-3.1.0.min.js"></script>
<link rel="stylesheet" href="app.css" type="text/css">
<title>menu</title>
</head>
<body>
<!--垂直菜单-->
<ul>
<li class="main">
<a href="#">菜单1</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单2</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
<li class="main">
<a href="#">菜单3</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
</ul>
<br/>
<br/>
<br/>
<!--水平菜单-->
<ul>
<li class="hmain">
<a href="#">菜单1</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
<li class="hmain">
<a href="#">菜单2</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
<li class="hmain">
<a href="#">菜单3</a>
<ul>
<li><a href="#">子菜单1</a></li>
<li><a href="#">子菜单2</a></li>
</ul>
</li>
</ul>
<script type="text/javascript" src="app.js"></script>
</body>
</html>

menu.html

第二步,给菜单设置样式,包括颜色,背景图片,a标签等等的样式。

ul,li{
list-style: none;
}
ul{
padding:;
margin:;
}
.main,.hmain{
background-image:url(img/1.png) ;
background-repeat: repeat-x;
width: 100px;
}
li{
background-color: #cccccc;
}
a{
text-decoration: none;
padding-left: 20px;
display: block;
width: 80px;
padding-top: 3px;
padding-bottom: 3px;
}
.main a,.hmain a{
color: white;
background-image: url("img/y.png");
background-repeat: no-repeat;
background-position: 3px center;
}
.main li a,.hmain li a{
color: black;
background-image: none;
}
.main ul,.hmain ul{
display:none;
}
.hmain{
float: left;
margin-right: 1px;
}

app.css

第三步,就是利用jQuery给菜单设置响应效果了。其中,垂直菜单的原理是:当点击这个a标签时,把子菜单的display属性变为block,再次点击,更改为none。这里可以用if-else的条件判断,然后设置css()方法,或者用hide/show/toggle,slideDown/slideUp方法。而水平菜单,用到的是hover属性,划过ul时的效果显示状态。

最后就是小图标的变化。用css修改方法即可。

$(document).ready(function(){
$(".main>a").click(function(){
var ulNode=$(this).next("ul");
//if(ulNode.css("display")=="none"){
// ulNode.css("display","block");
//}else{
// ulNode.css("display","none");
//}
//ulNode.show();
//ulNode.hide();
//ulNode.toggle(3000);//数字,slow,normal,fast
//ulNode.slideDown();
//ulNode.slideUp();
ulNode.slideToggle();
changeIcon($(this));
});
$(".hmain").hover(function(){
$(this).children("ul").slideDown();
changeIcon($(this).children("a"));
},function(){
$(this).children("ul").slideUp();
changeIcon($(this).children("a"));
})
});
function changeIcon(mainNode){
if(mainNode.css("background-image").indexOf("y.png")>=0){
mainNode.css("background-image","url('img/x.png')");
}else{
mainNode.css("background-image","url('img/y.png')");
}
}

app.js

如需工程文件,可以留下邮箱。。

  

实例:用jQuery实现垂直和水平下拉 菜单的更多相关文章

  1. jQuery水平下拉菜单实现

    <!DOCTYPE html> <html>    <head>       <title>jQuery水平下拉菜单实现</title>   ...

  2. jQuery插件:模拟select下拉菜单

    没搞那么复杂,工作中,基本够用.. <!doctype html> <html> <head> <meta charset="utf-8" ...

  3. jQuery实现一个淡入淡出下拉菜单 非常简易

    前段时间我一直在向大家推荐CSS3和HTML5的东西,尽管看上去很炫,但也有不少网友抱怨兼容性问题,所以今天开始我也会陆续向大家介绍一些兼容性较好的jQuery插件.今天先分享一款利用jQuery实现 ...

  4. 基于jQuery带图标的多级下拉菜单

    之前为大家分享了很多导航菜单.今天我们要来分享一款很不错的jQuery左侧带小图标的多级下拉菜单,菜单是垂直的,每一个菜单项带有一个小图标,看起来非常专业.并且菜单支持无限极下拉,所以对各位Web开发 ...

  5. jQuery实现多级手风琴树形下拉菜单(源码)

    前几天因为公司的菜单要调整,公司的UI框架是不支持的,所以就自己在网上找了一个下拉菜单,可以支持多级菜单数据的,菜单数据是从xml文件中配置后读取的,网上有许多这方面的例子感觉不是很好用,就打了个包贴 ...

  6. JQuery -&gt; 超级简单的下拉菜单

    使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...

  7. jQuery 实现无限任意添加下拉菜单

    新学jQuery还有很多没学,今天做了个下拉菜单,按照自己的思想结合学的基础效果实现一款可以任意添加层数的下拉菜单,如果有什么建议,欢迎指教啦啦啦 我喜欢备注细一些,这样给自己也是一种理解和方便回顾哈 ...

  8. [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示

    今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...

  9. 用jquery制作一个二级导航下拉菜单

    1使用$(function(){...})获取到想要作用的HTML元素. 2通过使用children()方法寻找子元素.       3通过使用show()方法来显示HTML元素.       4通过 ...

随机推荐

  1. Hdu 2475-Box LCT,动态树

    Box Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. openstack 控制节点大流量对外发包,nf_conntrack,table full droping packets

    某些人很MJJ,挂了N多代理来疯狂采集,把服务器带宽都耗尽了,没办法只好封掉一些! 目前发现的问题openStack kilo for ubuntu manuual运行一段时间后 云平台的控制节点p5 ...

  3. MySQL Workbench类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Workbench的下载 .MySQL Workbench的安装 .MySQL Workbench的使用 个人推荐,比较好的MySQL客户端工具 注意啊! 对于noi ...

  4. hdoj 4324 Triangle LOVE【拓扑排序判断是否存在环】

    Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  5. 29. Divide Two Integers

    用加减法模拟除法. 除法本质就是 被除数 - 商个除数相加 = 0 如果你电脑足够好,可以无限减..但是这个题肯定不是这么简单. 最快的方法还是 减去 商乘以除数. 但是这里不能使用乘法,那只好用BI ...

  6. python处理xml的常用包(lib.xml、ElementTree、lxml)

    python处理xml的三种常见机制 dom(随机访问机制) sax(Simple APIs for XML,事件驱动机制) etree python处理xml的三种包 标准库中的xml Fredri ...

  7. 如何解决 SogouIinput not enough space for thread data ?? 虚拟内存

    问题:总是提示没有足够的空间读写数据 上图: 原因: 可能是虚拟内存设置了过大了[我不知道明白是不是也是这样,我出现这个问题就是因为我把虚拟内存设置成了4G,我的物理内存是2G的] 具体问题具体分析, ...

  8. Apache + Tomcat集群配置详解 (1)

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

  9. lenky的个人站点 ----LINUX 内核进程

    http://www.lenky.info/archives/category/nix%E6%8A%80%E6%9C%AF/%E5%86%85%E6%A0%B8%E6%8A%80%E6%9C%AF

  10. Qt 读写XML文件

    1.读操作: QDomDocument doc( “mydocument " ); QFile file( "ccc.xml" ); if ( !file.open( I ...