JQuery制作无限级下导航拉菜单详解

以前也写过关于JQuery制作二级菜单的方法,今天自己彻底研究了一下无限级的下拉菜单,总结一下制作方法。相信无限级的会做了以后你就能掌握下拉菜单这个技术了。进入正题…

我先给出我的基本制作流程:

1.写出结构合理的xhtml。 主要用到列表ul的嵌套。

2.写好布局的CSS代码。 主要给子菜单定位和相关设置。

3.写出JQuery代码。 主要用到JQuery的一个hover()方法

一:xhtml

为了不至于太乱我们可以先研究一个菜单的xhtml代码。我写出了我认为比较合理的一种,如果你看起来吃力的话有个好办法就是抄十遍:

<li><a href="#">Menu1</a>	//.menu1是菜单的个数,可以整体copy
    <ul>	//.item的作用是为隐藏后面的li,.menu的作用是为JQuery提供循环
      <li><a href="#">Menu-item1</a></li>
      <li><a href="#">Menu-item2</a></li>
      <li><a href="#">Menu-item3</a></li>
      <li><a href="#">Menu-item4</a>
      	<ul>
              <li><a href="#">Menu-item1</a></li>
              <li><a href="#">Menu-item2</a></li>
              <li><a href="#">Menu-item3</a></li>
              <li><a href="#">Menu-item4</a></li>
         </ul>
      </li>
    </ul>
  </li>

注意:这里我只给出了两个子菜单,要让它无限扩充的话只要把”ul.menu”所有代码复制到你相加的子菜单的li标签里面的a标签之后

二:核心CSS代码

.menu 		{ width:100px; float:left; border-right:5px solid #000}
.menu1		{ float:left; width:100px;}
#menu li 	{ width:100px;}
.menu a 	{ height:25px; line-height:25px; width:100px;
 border:1px solid #f00; display:block; text-align:center; }

.item li 	{ display:none;}	/*通常情况下隐藏子菜单*/
.item li 	{ position:relative;}
/*设置相对定位,便于子菜单位于父菜单的右侧100px*/

.item li ul { position:absolute; left:100px; top:0;}

三:JQuery代码

$(function (){
	$(".menu li").hover(
       //让.menu下面的列表项li响应鼠标移到到上面的事件
		function (){
			$(this).children().children("li").fadeIn();
			//当前对象的子子元素li淡入
		},
		function (){
			$(this).children().children("li").fadeOut();
			//当前对象的子子元素li淡出
		}
	);
});

最终代码与效果预览

注意:IE6中会出现一点bug,如果你知道解决方法的话可以谈讨一下
感谢 倾心 同学的帮助,菜单在IE6下的响应问题已解决.

JQuery制作无限级下导航拉菜单详解》上有 16 条评论

  1. 这种特效是见过 但自己没研究过 今天学到手了 哈哈 以后有合适的地方用上!
    你说“如果你看起来吃力的话有个好办法就是抄十遍”,不知道CTRL+C,+V十遍能不能达到效果! 哈哈~~~~

  2. 这种下拉菜单看上去都比较COOL啊!
    看来只有大型的网站才可能用得上这种技术,我等小站用的话就太委屈它啦!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。