文章来自LearnShare,转载请注明。

分享自己写的基于jQuery的手风琴菜单,包括横向和纵向两种,会不断丰富它的功能,方便自己和大家使用。

Updates:

————————————————————————————————————————————————————————————

@2012-12-12 version 0.3

加入了可选的菜单行为互斥,即菜单项不同时展开。通过“mutex”变量指定。效果预览:纵向v3

————————————————————————————————————————————————————————————

@2012-12-10 version 0.2

加入了可选的子菜单动画效果,通过“animation”变量指定,也可扩展自定义动画。效果预览:纵向v2

————————————————————————————————————————————————————————————

@2012-12-05 version 0.1

AccordionMenu的子菜单可以通过点击展开或关闭。

————————————————————————————————————————————————————————————

最早接触的手风琴菜单应该是QQ Player的设置界面,这个组件可以将无法一次性展示的菜单项或内容折叠起来,有利于菜单分组和内容的展示。

初次动手编写手风琴菜单是在今年的暑期实习,项目是教学使用的网站,需要分章节展示内容,所以将侧边栏做成了目录导航菜单,使用了三级目录将数百项菜单折叠为章节篇三层,并使用jQuery的动画效果延迟章节展开收缩的动作,整体效果很不错。(本文将在最后的部分编写一个类似的菜单)

HTML主要代码:

<!--
* Widget: HUI.AccordionMenu
* Version: 0.1 V (@2012-12-05)
* Author: H-Labs (LearnShare)
*
* --><div id="menu"><div class="menu-item"><div class="item-title">item 1</div><div class="item-content">content1</div></div><div class="menu-item"><div class="item-title">item 2</div><div class="item-content">content2</div></div><div class="menu-item"><div class="item-title">item 3</div><div class="item-content">content3</div></div>
</div>

<div id="menu">...</div> 部分是整个菜单;

<div class="menu-item">...</div> 部分是菜单项(首层)。在class中添加open属性,可使该项默认展开;

<div class="item-title">...</div> 部分是菜单标题部分;

<div class="item-content">...</div> 是菜单内容部分。

CSS代码省略

JS代码:

/**
* Widget: HUI.AccordionMenu
* Version: 0.3 V (@2012-12-12)
* Author: H-Labs (LearnShare)
*/var animation="slide"; // 设置折叠动画:none 无动画;slide 滑动;fade 淡入淡出
var mutex=1; // 设置菜单行为关系:0 无关;1 互斥(不同时展开)$(document).ready(function(){initMenus();bindMenus();
});
/*
* 初始化菜单状态,将所有class包含open的项目显示出来
*/
function initMenus(){$(".item-content").each(function(){if($(this).parent().hasClass("open")){$(this).show();}else{$(this).hide();}});
}
/*
* 监视点击事件,执行显示或隐藏动作并设定或取消open状态
*/
function bindMenus(){$(".item-title").bind("click",function(){var item=$(this).parent();if(item.hasClass("open")){hideItem($(this).next());hideAllItems();if(!mutex){item.removeClass("open");}}else{hideAllItems();showItem($(this).next());item.addClass("open");}});
}
/*
* 折叠所有已展开菜单项
*/
function hideAllItems(){if(mutex){$(".menu-item").each(function(){if($(this).hasClass("open")){hideItem($(this).find(".item-content"));$(this).removeClass("open");}});}
}
/*
* 折叠菜单项
*/
function hideItem(item){switch(animation){case "slide":item.slideUp();break;case "fade":item.fadeOut();break;default:item.hide();break;}
}
/*
* 展开菜单项
*/
function showItem(item){switch(animation){case "slide":item.slideDown();break;case "fade":item.fadeIn();break;default:item.show();break;}
}

效果预览:

1.纵向v1

2.横向v1

文章来自LearnShare,转载请注明。

【HUI】AccordionMenu 手风琴菜单(基于jQuery)相关推荐

  1. HTML实现二级联动下拉菜单,基于jquery的二级联动菜单实现代码

    jQuery 1.3.2 简单实现select二级联动 jQuery 二级联动 $(document).ready(function(){ $("#province").chang ...

  2. html css 圆形按钮 仿uc,10款基于jquery的web前端动画特效

    1.jQuery横向手风琴图片切换动画 之前我们为大家分享过很多款基于jQuery和CSS3的手风琴菜单和手风琴焦点图插件,比如CSS3响应式垂直手风琴菜单和jQuery横向手风琴图片展示插件.今天要 ...

  3. 手风琴式折叠html,基于jQuery实现以手风琴方式展开和折叠导航菜单

    本章节分享一段代码实例,它实现了手风琴方式展开和折叠导航菜单效果. 代码实例如下: 代码实例如下: 脚本之家 dl{width:150px;} dl,dd{margin:0;} dt{ backgro ...

  4. 基于jQuery垂直多级导航菜单代码

    基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载.效果图如下: 在线预览    源码下载 实现的代码. html代码: <ul class="ce& ...

  5. 一款基于jquery和css3的响应式二级导航菜单

    今天给大家分享一款基于jquery和css3的响应式二级导航菜单,这款导航是传统的基于顶部,鼠标经过的时候显示二级导航,还采用了当前流行的响应式设计.效果图如下: 在线预览   源码下载 实现的代码. ...

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

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

  7. 手风琴html例子,jquery实现简单手风琴菜单效果实例

    本文实例讲述了jquery实现简单手风琴菜单效果的方法.分享给大家供大家参考.具体实现方法如下: dd').hide(); $('.accordion > dt > a').click(f ...

  8. 10 个非常酷的基于jQuery的菜单效果插件

    除了直观的界面效果外,炫酷的网站导航菜单或右键菜单也能为访问者带来眼前一亮的感觉.本文为你带来10个非常酷的基于jQuery的菜单效果插件. 1.  右击菜单 一个创建右击菜单的插件,简洁且易用. 源 ...

  9. 基于jQuery的鼠标右键菜单

    对于自制的鼠标右键功能,我们应该考虑哪些因素呢? 一.涉及因素 1.阻止默认鼠标右键事件. 3.右键事件,使菜单出现. 2.考虑右键菜单出现的位置,是否超出窗口. 4.点击窗口任意位置,菜单消失. 二 ...

最新文章

  1. 第十二届西南石油大学程序设计新生赛官方题解
  2. 常用正则表达式合集与工具
  3. arcgis的server不可用
  4. vscode使用教程python-如何在VSCode上轻松舒适的配置Python的方法步骤
  5. 什么时候用到联合索引
  6. opengl 球纹理旋转源代码
  7. “乞讨者”王小波与“怪物”巴尔扎克
  8. MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS
  9. 向小伙伴讲讲搜索引擎?读完这个文章先
  10. 使用ceph-deploy 部署集群
  11. Idea翻译插件google翻译失败超时
  12. 单片机IO详解(上拉 下拉 准双向 输入 输出 推挽 开漏)
  13. HTTP协议为什么是无状态的?无状态指的是什么
  14. [推荐书籍]12本程序员必备书籍
  15. UG三轴产品编程3D图档-刀路图档550例
  16. UE4 Slate九 控件反射器Widget Reflector介绍
  17. C++中编写自己的头文件
  18. __align的用法
  19. Elasticsearch基础
  20. JavaIO知识简述

热门文章

  1. 杨毅:不够优秀就不要腆着脸继续占便宜
  2. 推荐 -- 《分布式系统的工程化开发方法》
  3. 什么叫显示动力学_ANSYS-什么叫显示动力学
  4. 用python爬虫来登录深信服ac行为控制器,涉及到js加密部分,更新url分类库(针对企业微信更新)
  5. 多种方法教你 Docx怎么转换成Doc
  6. elementui表格在行内增删改查
  7. 光敏二极管和光敏三极管的原理、区别、辨别以及应用电路
  8. Linux 目录与文件
  9. AJAX的全称是什么? 介绍一下AJAX
  10. stm32 DMA2D使用中断LVGL,提高LVGL帧率