JQuery——横纵向菜单设计

    JQuery就是用JS写的,方便编程的一个方法集合。jQuery就好比把一些js的效果事先做好了,并进行了封装,然后直接调用就行了。你用javascript实现一个动画效果说不定写很长的一段代码,然而jQuery开发者事先写好了,你只需要用他的函数直接调用就可以了。两种区别也不是很大,无非就是jQuery更简单,印证了jQuery的口号jQuery: The Write Less, Do More;JavaScript Library。


下面的实践要实现的功能是点击或鼠标进入父菜单时,显示子菜单;再次点击或鼠标移出父菜单时,子菜单隐藏。


实践二:横纵向菜单设计


  menu.html

   

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title>JQuery实战-横纵向菜单设计</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<link type="text/css" rel="stylesheet" href="css/menu.css" />
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript" src="js/menu.js"></script>
	</head>
	<body> <!--以ul和li来创建列表的层级关系-->
		<ul> 
		    <!--li有顺序的列表-->
			<li class="main">
			        <!--a标签用于触发动作的标记-->
					<a href="#">菜单项1</a>
				<ul>
					<li>
						<a href="#">子菜单项11</a>
					</li>
					<li>
						<a href="#">子菜单项12</a>
					</li>
				</ul>
			</li>
			<li class="main">
				<a href="#">菜单项2</a>
				<ul>
					<li>
						<a href="#">子菜单项21</a>
					</li>
					<li>
						<a href="#">子菜单项22</a>
					</li>
				</ul>
			</li>
			<li class="main">
				<a href="#">菜单项3</a>
				<ul>
					<li>
						<a href="#">子菜单项31</a>
					</li>
					<li>
						<a href="#">子菜单项32</a>
					</li>
				</ul>
			</li>
		</ul>
		<br />
		<br />
		<br />
		<!--横向菜单-->
		<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>
</html>

  menu.css

ul, li {
	/*清除ul和li上默认的小圆点*/
	list-style: none;
}
ul {
	/*清除子菜单的缩进值*/
	padding: 0;
	margin: 0;  /*与IE兼容*/
}
.main, .hmain {
	background-image: url(../images/title.gif); /*引入标签背景图片*/
	background-repeat: repeat-x; /*图片横向重复*/
	width: 120px; /*控制图片宽度*/
}
li { /*控制背景色*/
	background-color: #EEEEEE;
}
a {
	/*取消所有的下划线*/
	text-decoration: none;
	/*子菜单左缩进*/
	padding-left: 20px;
	/*以块级元素显示,使得a充满其所在区域*/
	display: block;
	display: inline-block;/*兼容IE6*/
	width: 100px;
	padding-top: 3px;
	padding-bottom: 3px;
}
.main a, .hmain a {
	color: white;
	background-image: url(../images/collapsed.gif);
	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;
}


/*横向菜单,把上面的main标记处也加上hmain*/
.hmain {
	float: left;
	margin-right: 1px; /*菜单与菜单的距离*/
}

menu.js

$(document).ready(function(){
	//页面中的DOM已经装载完成时,执行的代码
	//$(".main > a")选择器基于jquery
	$(".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("slow");//参数表明出现时的速度,也可以为normal或fast或数值
		//ulNode.hide();
		//ulNode.toggle();//省去了写if else的麻烦
		//
		//ulNode.slideDown("slow");//与show/hide相似用途
		//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) {
		/*如果包含了图片信息内容,则改变图片*/
		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')");
		}
	}
}

结果:

                                                       

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值