以前也写过关于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真可谓强大,简单的几段代码就可以实现这么酷的效果。
@唏嘘一世 呵呵,那确实,不过Jquery给我们带来的方便可不止这些哦.
厲害!厲害!
@willin 呵呵,分析清楚一级就很好理解了^!^
这种特效是见过 但自己没研究过 今天学到手了 哈哈 以后有合适的地方用上!
你说“如果你看起来吃力的话有个好办法就是抄十遍”,不知道CTRL+C,+V十遍能不能达到效果! 哈哈~~~~
@0cai 呵呵。那样也行不过就只能学到复制粘贴了哈^!^
这是一个特效 我在某网站上见过,
很常用的效果^!^
第一个function里的注释应该是“//当前对象的子子元素li入“吧!
@hiro 写错了,一个是淡出一个应该是淡入.呵呵。你可真仔细.
很好,真的很好!!
这种下拉菜单看上去都比较COOL啊!
看来只有大型的网站才可能用得上这种技术,我等小站用的话就太委屈它啦!
@365hope 也是,不过拿来做研究是挺有价值的^!^
为什么我想要的你这儿都有呢?
@臣臣吧 呵呵.很流行,所以大家都喜欢吧.不过这个在IE6下面有一点问题,想发上来讨论一下.