[关闭]
@liayun 2016-05-11T19:40:49.000000Z 字数 4029 阅读 2236

知问前端--折叠菜单UI

知问前端


折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功能UI。它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了。

一、使用accordion

使用accordion比较简单,但需要按照指定的规范即可。
HTML部分:

  1. <div id="accordion">
  2. <h3>菜单1</h3>
  3. <div>内容1</div>
  4. <h3>菜单2</h3>
  5. <div>内容2</div>
  6. <h3>菜单3</h3>
  7. <div>内容3</div>
  8. </div>

结合选显卡之后的HTML代码为:

  1. <div id="main">
  2. <div class="main_left">
  3. <div id="tabs">
  4. <ul>
  5. <li><a href="tab1.html">tab1</a></li>
  6. <li><a href="tab2.html">tab2</a></li>
  7. <li><a href="tab3.html">tab3</a></li>
  8. </ul>
  9. </div>
  10. </div>
  11. <div class="main_right">
  12. <div id="accordion">
  13. <h3>菜单1</h3>
  14. <div><p>内容1</p><p>内容1</p></div>
  15. <h3>菜单2</h3>
  16. <div>内容2</div>
  17. <h3>菜单3</h3>
  18. <div>内容3</div>
  19. </div>
  20. </div>
  21. </div>

如何使用呢?只须jQuery代码:$("#accordion").accordion()即可。

二、修改accordion样式

在显示的accordion折叠菜单中,在火狐浏览器中打开Firebug或者右击->查看元素。这样,我们可以看看accordion的样式,根据样式进行修改。我们为了和网站主题符合,对accordion的标题背景进行修改。如下:

  1. //无须修改ui里的CSS,直接用style.css替代掉
  2. .ui-widget-header {
  3. background:url(img/ui_header_bg.png);
  4. }

对上面加上选显卡之后的HTML内容的css修饰,style.css 如下:

  1. #main {
  2. margin: 0 auto;
  3. padding: 10px 0 0 0;
  4. width: 800px;
  5. }
  6. #main .main_left {
  7. width: 580px;
  8. float: left;
  9. }
  10. #main .main_right {
  11. width: 200px;
  12. float: right;
  13. }
  14. #tabs {
  15. border: none;
  16. }
  17. #ui-id-6, #ui-id-8, #ui-id-10 {
  18. border: 1px solid #ccc;
  19. border-top: none;
  20. position: relative;
  21. top: -2px;
  22. }

三、accordion()方法的属性

折叠菜单的方法有两种形式:

  1. accordion(options),options是以对象键值对的形式传参,每个键值对表示一个选项
  2. accordion('action', param),action是操作选项卡方法的字符串,param则是options的某个选项

accordion外观选项

属性 默认值/类型 说明
collapsible false/布尔值 当设置为true时,允许菜单折叠对应的内容。默认值为false,不会折叠对应内容。
disabled false/布尔值 默认为false,设置为true则禁用折叠菜单。
event click/字符串 触发accordion的事件类型,默认为click。可以设置mouseover等其他鼠标事件。
active 数组和布尔值 如果是数组,初始化时默认显示哪个菜单,默认值为0。如果是布尔值,那么默认是否折叠,置为true,则会折叠,但条件必须是collapsible值为true。
heightStyle auto/字符串 默认为auto,即自动根据最高的那个为基准,fill则是填充一定的可用高度(一点卵用也没有),content则是根据内容伸展高度。
header h1/字符串 设置折叠菜单的标题标签,设置时,应该与HTML的标题标记相对应
icons 默认图标 设置想要的图标。

jQuery测试代码:

  1. $('#tabs').tabs();
  2. $("#accordion").accordion({
  3. collapsible : true,
  4. //disabled : true,
  5. //event : "mouseover",
  6. //active : 1,
  7. active : true,
  8. //heightStyle : "auto",
  9. heightStyle : "content",
  10. //heightStyle : "fill",
  11. header : "h3",
  12. icons: {
  13. "header": "ui-icon-plus",
  14. "activeHeader": "ui-icon-minus",
  15. }
  16. });

四、accordion()方法的事件

除了属性设置外,accordion()方法也提供了大量的事件。这些事件可以给各种不同的状态提供回调函数。
accordion事件选项

事件名 说明
create 当创建一个折叠菜单时激活此事件。该方法有两个参数(event, ui),ui参数有两个子属性header和panel,得到当前标题和内容选项的对象。
activate 当切换一个折叠菜单时,启动此事件。该方法有两个参数(event, ui),ui参数有四个子属性newHeader、newPanel、oldHeader,oldPanel,分别得到的是新header对象、新内容对象、旧header对象和旧内容对象。
beforeActivate 当切换一个折叠菜单之前,启动此事件。该方法有两个参数(event, ui),ui参数有四个子属性newHeader、newPanel、oldHeader、oldPanel,分别得到的是新header对象、新内容对象、旧header对象和旧内容对象。

jQuery测试代码:

  1. $('#tabs').tabs();
  2. $("#accordion").accordion({
  3. heightStyle : "content",
  4. header : "h3",
  5. icons: {
  6. "header": "ui-icon-plus",
  7. "activeHeader": "ui-icon-minus",
  8. },
  9. create : function(event, ui) {
  10. alert("create");
  11. alert($(ui.header.get()).html());
  12. alert($(ui.panel.get()).html());
  13. },
  14. activate : function(event, ui) {
  15. alert($(ui.oldHeader.get()).html());
  16. alert($(ui.oldPanel.get()).html());
  17. alert($(ui.newHeader.get()).html());
  18. alert($(ui.newPanel.get()).html());
  19. },
  20. beforeActivate : function(event, ui) {
  21. alert($(ui.oldHeader.get()).html());
  22. alert($(ui.oldPanel.get()).html());
  23. alert($(ui.newHeader.get()).html());
  24. alert($(ui.newPanel.get()).html());
  25. }
  26. });

accordion('action', param)方法

方法 返回值 说明
accordion('disable') jQuery对象 禁用折叠菜单
accordion('enable') jQuery对象 启用折叠菜单
accordion('widget') jQuery对象 获取折叠菜单的jQuery对象
accordion('destroy') jQuery对象 删除折叠菜单,直接阻断了accordion
accordion('refresh') jQuery对象 更新折叠菜单,比如高度
accordion('option', param) 一般值 获取option属性的值
accordion('option', param, value) jQuery对象 设置option属性的值

仅测试如下方法:

  1. $('#tabs').tabs();
  2. $("#accordion").accordion({
  3. heightStyle : "content",
  4. header : "h3",
  5. icons: {
  6. "header": "ui-icon-plus",
  7. "activeHeader": "ui-icon-minus",
  8. }
  9. });
  10. $("#accordion").accordion("disable"); //禁用折叠菜单
  11. $("#accordion").accordion("enable"); //启用折叠菜单
  12. alert($("#accordion").accordion("option", "active")); //0
  13. $("#accordion").accordion("option", "active", 1);

五、accordion中使用on()

在accordion的事件中,提供了使用on()方法处理的事件方法。
on()方法触发的选项卡事件

特效名称 说明
accordionactivate 折叠菜单切换时触发
accordionbeforeactivate 折叠菜单切换前触发

如,jQuery代码:

  1. $("#accordion").on("accordionactivate", function(event, ui) {
  2. alert($(ui.oldHeader.get()).html());
  3. alert($(ui.oldPanel.get()).html());
  4. alert($(ui.newHeader.get()).html());
  5. alert($(ui.newPanel.get()).html());
  6. });
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注