此菜单的作用与特点:
1.自动排序
本菜单则可以在一直输出一个class定义的下拉菜单,无需对多级菜单定义。
2.自动添加下拉指示
只需要在css中定义好下拉效果的样式,代码会自动寻找下拉菜单并且添加指示箭头
3.菜单动画执行效果修复
本菜单解决了鼠标滑过的次数很多,会看到下拉菜单不停的展开收起展开收起的问题,增强了用户体验。
4.自动排列
本代码会对下拉菜单进行自动排列,无需单独进行设置,css也简单高效,兼容效果也不错。用到的图片也比较少。
建议的结构:
我在案例中的结构也是这样的:
css部分:
<style>
/*去掉默认html样式*/
a { text-decoration:none; }
ul, li { list-style:none; margin:0; padding:0; }
/*定义主导航*/
.nav li { background:#111; color:#fff; height:30px; line-height:30px; position:relative; float:left; margin-right:5px; width:100px; text-align:center; font-family:Arial, Helvetica, sans-serif; }
.nav li a { color:#fff; font-size:14px; display:block; }
/*下拉菜单样式*/
ul.sub_menu { position:absolute;width:100px; display:none; z-index:999; }
.nav li ul.sub_menu li { background:none; color:#555; font-size:12px; border-bottom:1px #333 solid; position:relative; width:100px; height:30px; }
.nav li ul.sub_menu li.last { border-bottom:none; } /*js会对最后一个li添加该class,去掉border-bottom效果*/
.nav li ul.sub_menu li a { background:#222; color:#888; display:block;height:30px; }
.nav li ul.sub_menu li a:hover, .nav li ul.sub_menu li a.now { background:#f90;color:#fff;}
.nav li.now,.nav li.current { background:#f60;color:#fff;}
/*如果有下拉菜单添加的class*/
.hasmenu { background:url(arrow.png) no-repeat right; padding-right:15px;}/*主导航箭头向下*/
.nav li a.hasmenu { background-position:right -30px;}/*下拉菜单箭头向右*/
.nav li ul.sub_menu li a.hasmenu { background:#222 url(arrow.png) no-repeat right top;}
.nav li ul.sub_menu li a.hasmenu:hover { background:#f90 url(arrow.png) no-repeat right top; color:#fff;}
</style>
然后是js对菜单的修饰。
首先,需要引入jquery.js,然后,才是本菜单的js调用:
效果和本文顶部的效果一致,slideDown,slideUp是展开收起的效果,可以替换为其他特效如fadeIn和fadeOut等。