amazeui学习笔记--js插件(UI增强3)--折叠面板Collapse

一、总结

注意点:

1、data-am-collapse:这个东西就是展开折叠事件

2、am-collapse(包括其下属):这个控制折叠样式

1、折叠面板:结合 Panel 组件实现手风琴效果。需结合以下辅助 class 使用:

  • 要隐藏的内容添加 .am-collapse;
  • 默认显示的内容添加 .am-collapse.am-in;

添加以上 class 以后,通过 Data API 来调用:

<h4 data-am-collapse="{parent: '#accordion', target: '#do-not-say-1'}"></h4>

其中:

  • parent 为容器 ID
  • target 为要伸缩的容器 ID

如果触发元素为 <a> 元素,可以把 target 设置在 href 属性里。

<a data-am-collapse="{parent: '#accordion'}" href="#do-not-say-1">
...
</a>
<div class="am-panel-group" id="accordion">
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h4 class="am-panel-title" data-am-collapse="{parent: '#accordion', target: '#do-not-say-1'}">
...
</h4>
</div>
<div id="do-not-say-1" class="am-panel-collapse am-collapse am-in">
<div class="am-panel-bd">
...
</div>
</div>
</div>

2、折叠菜单:使用时注意目标元素外面应该有一个容器,以便动画执行时计算高度。

<button class="am-btn am-btn-primary" data-am-collapse="{target: '#collapse-nav'}">Menu <i class="am-icon-bars"></i></button>
<nav>
<ul id="collapse-nav" class="am-nav am-collapse">
<li><a href="">开始使用</a></li>
<li><a href="">CSS 介绍</a></li>
<li class="am-active"><a href="">JS 介绍</a></li>
<li><a href="">功能定制</a></li>
</ul>
</nav>

3、折叠列表:注意 <li> 标签上需要添加 am-panel class。

4、通过data API设置折叠:在元素上添加 data-am-collapse 并设置 target 的值为折叠元素 ID:

<button data-am-collapse="{target: '#my-collapse'}"></button>

5、通过js调用折叠:$('#myCollapse').collapse()

  • $().collapse(options) - 绑定元素展开/折叠操作
$('#myCollapse').collapse({
toggle: false
})
  • $().collapse('toggle') - 切换面板状态
  • $().collapse('open') - 展开面板
  • $().collapse('close') - 关闭面板

6、自定义事件:

$('#collapse-nav').on('open.collapse.amui', function() {
console.log('折叠菜单打开了!');
}).on('close.collapse.amui', function() {
console.log('折叠菜单关闭鸟!');
});
事件 描述
open.collapse.amui open 方法被调用时立即触发
opened.collapse.amui 元素完全展开后触发
close.collapse.amui close 方法被调用后立即触发
closed.collapse.amui 元素折叠完成后触发

二、折叠面板Collapse

Collapse


折叠效果组件,用于制作下滑菜单或手风琴效果。

使用演示

折叠面板

结合 Panel 组件实现手风琴效果。需结合以下辅助 class 使用:

  • 要隐藏的内容添加 .am-collapse;
  • 默认显示的内容添加 .am-collapse.am-in;

添加以上 class 以后,通过 Data API 来调用:

 Copy
<h4 data-am-collapse="{parent: '#accordion', target: '#do-not-say-1'}"></h4>

其中:

  • parent 为容器 ID
  • target 为要伸缩的容器 ID

如果触发元素为 <a> 元素,可以把 target 设置在 href 属性里。

 Copy
<a data-am-collapse="{parent: '#accordion'}" href="#do-not-say-1">
...
</a>
 Copy

莫言 - 你不懂我,我不怪你 #1

每个人都有一个死角, 自己走不出来,别人也闯不进去。
我把最深沉的秘密放在那里。
你不懂我,我不怪你。

每个人都有一道伤口, 或深或浅,盖上布,以为不存在。
我把最殷红的鲜血涂在那里。
你不懂我,我不怪你。

莫言 - 你不懂我,我不怪你 #2

莫言 - 你不懂我,我不怪你 #3

<div class="am-panel-group" id="accordion">
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h4 class="am-panel-title" data-am-collapse="{parent: '#accordion', target: '#do-not-say-1'}">
...
</h4>
</div>
<div id="do-not-say-1" class="am-panel-collapse am-collapse am-in">
<div class="am-panel-bd">
...
</div>
</div>
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h4 class="am-panel-title" data-am-collapse="{parent: '#accordion', target: '#do-not-say-2'}">
...
</h4>
</div>
<div id="do-not-say-2" class="am-panel-collapse am-collapse">
<div class="am-panel-bd">
...
</div>
</div>
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h4 class="am-panel-title" data-am-collapse="{parent: '#accordion', target: '#do-not-say-3'}">...</h4>
</div>
<div id="do-not-say-3" class="am-panel-collapse am-collapse">
<div class="am-panel-bd">
...
</div>
</div>
</div>
</div>

折叠菜单

使用时注意目标元素外面应该有一个容器,以便动画执行时计算高度。

 Copy
Menu 
<button class="am-btn am-btn-primary" data-am-collapse="{target: '#collapse-nav'}">Menu <i class="am-icon-bars"></i></button>
<nav>
<ul id="collapse-nav" class="am-nav am-collapse">
<li><a href="">开始使用</a></li>
<li><a href="">CSS 介绍</a></li>
<li class="am-active"><a href="">JS 介绍</a></li>
<li><a href="">功能定制</a></li>
</ul>
</nav>

折叠列表

感谢 @looly 提供的例子。注意 <li> 标签上需要添加 am-panel class。

 Copy
<ul class="am-list admin-sidebar-list" id="collapase-nav-1">
<li class="am-panel">
<a data-am-collapse="{parent: '#collapase-nav-1'}" href="#/"><i class="am-icon-home am-margin-left-sm"></i> 首页</a>
</li> <li class="am-panel">
<a data-am-collapse="{parent: '#collapase-nav-1', target: '#user-nav'}">
<i class="am-icon-users am-margin-left-sm"></i> 人员管理 <i class="am-icon-angle-right am-fr am-margin-right"></i>
</a>
<ul class="am-list am-collapse admin-sidebar-sub" id="user-nav">
<li><a href="#/userAdd"><i class="am-icon-user am-margin-left-sm"></i> 添加人员 </a></li>
<li><a href="#/userList/0"><i class="am-icon-user am-margin-left-sm"></i> 人员列表 </a></li>
</ul>
</li> <li class="am-panel">
<a data-am-collapse="{parent: '#collapase-nav-1', target: '#company-nav'}">
<i class="am-icon-table am-margin-left-sm"></i> 单位(部门)管理 <i class="am-icon-angle-right am-fr am-margin-right"></i>
</a>
<ul class="am-list am-collapse admin-sidebar-sub" id="company-nav">
<li><a href="#/companyAdd"><span class="am-icon-table am-margin-left-sm"></span> 添加单位(部门) </a></li>
<li><a href="#/companyList/0"><span class="am-icon-table am-margin-left-sm"></span> 单位(部门)列表 </a></li>
</ul>
</li> <li class="am-panel">
<a data-am-collapse="{parent: '#collapase-nav-1', target: '#role-nav'}">
<i class="am-icon-table am-margin-left-sm"></i> 角色管理 <i class="am-icon-angle-right am-fr am-margin-right"></i>
</a>
<ul class="am-list am-collapse admin-sidebar-sub" id="role-nav">
<li><a href="#/roleAdd"><span class="am-icon-table am-margin-left-sm"></span> 添加角色 </a></li>
<li><a href="#/roleList/0"><span class="am-icon-table am-margin-left-sm"></span> 角色列表 </a></li>
</ul>
</li>
</ul>

调用方式

通过 Data API

在元素上添加 data-am-collapse 并设置 target 的值为折叠元素 ID:

 Copy
<button data-am-collapse="{target: '#my-collapse'}"></button>

通过 JS

使用方法:

 Copy
$('#myCollapse').collapse()

方法

  • $().collapse(options) - 绑定元素展开/折叠操作
 Copy
$('#myCollapse').collapse({
toggle: false
})
  • $().collapse('toggle') - 切换面板状态
  • $().collapse('open') - 展开面板
  • $().collapse('close') - 关闭面板

选项

参数 类型 默认 描述
parent 选择符 false 如果设置了 parent 参数,且该容器下有多个可折叠的面板时,展开一个面板会关闭其它展开的面板。换言之,如果想让多个面板可以都处于展开状态,那不设置这个参数即可。
toggle 布尔值 true 交替执行展开/关闭操作

自定义事件

自定义事件在折叠的元素上触发,以上面的折叠菜单为例,#collapse-nav 触发自定义事件:

 Copy
$('#collapse-nav').on('open.collapse.amui', function() {
console.log('折叠菜单打开了!');
}).on('close.collapse.amui', function() {
console.log('折叠菜单关闭鸟!');
});
事件 描述
open.collapse.amui open 方法被调用时立即触发
opened.collapse.amui 元素完全展开后触发
close.collapse.amui close 方法被调用后立即触发
closed.collapse.amui 元素折叠完成后触发

注意事项

不要在折叠内容的容器上设置垂直的 margin/padding/border 样式。

jQuery 计算元素高度的方式有点奇葩,暂时只能通过上面的方式规避。

amazeui学习笔记--js插件(UI增强3)--折叠面板Collapse的更多相关文章

  1. amazeui学习笔记--js插件(UI增强)--警告框Alert

    amazeui学习笔记--js插件(UI增强)--警告框Alert 一.总结 1.警告框基本样式:用am-alert声明div容器, <div class="am-alert" ...

  2. amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown

    amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown 一.总结 1.am-dropdown(及其孩子):控制下拉列表的样式 2.data-am-dropdown(及其孩子):控 ...

  3. amazeui学习笔记--js插件(UI增强2)--按钮交互Button

    amazeui学习笔记--js插件(UI增强2)--按钮交互Button 一.总结 1.按钮loading状态: <button type="button" class=&q ...

  4. amazeui学习笔记--css(常用组件12)--面板Panel

    amazeui学习笔记--css(常用组件12)--面板Panel 一.总结 1.面板基本样式:默认的 .am-panel 提供基本的阴影和边距,默认边框添加 .am-panel-default,内容 ...

  5. amazeui学习笔记二(进阶开发1)--项目结构structure

    amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...

  6. amazeui学习笔记三(你来我往1)--常见问题FAQs

    amazeui学习笔记三(你来我往1)--常见问题FAQs 一.总结 1.DOM事件失败:记得加上初始化代码,例如 图片轮播 $('#my-slider').flexslider(); 2.jquer ...

  7. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  8. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  9. amazeui学习笔记一(开始使用3)--兼容性列表compatibility

    amazeui学习笔记一(开始使用3)--兼容性列表compatibility 一.总结 1.不要用ie做前端测试,不要碰ie,尽量用google 浏览器: 按照微软官方的说法,IE 开发者工具中的浏 ...

随机推荐

  1. 一分钟搞清MyEclipse与Eclipse的关系

    经常在各种论坛会出现一些讨论MyEclipse与Eclipse的,比如两者的使用情况,区别,哪个好,诸如此类的问题,因此在查询资料后感觉有些新的收获这里做些总结. 产地不同 Eclipse 是一个ID ...

  2. 70.nodejs操作mongodb

    转自:https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb ...

  3. 46.Express框架 GET 方法和POST 方法

    转自:http://www.runoob.com/nodejs/nodejs-express-framework.html GET 方法 以下实例演示了在表单中通过 GET 方法提交两个参数,我们可以 ...

  4. 82.QT实现委托构造

    #include "mainwindow.h" #include <QApplication> //创建一个MainWindow类 class myclass { pr ...

  5. 002 python介绍/解释器安装/变量/常量/内存管理

    编程语言介绍 机器语言 :直接用计算机二进制指令编写程序,直接控制硬件 汇编语言:用英文标签取代二进制指令编写程序,本质也是直接控制硬件 高级语言:用人能理解的表达方式来编写程序,无需考虑硬件的操作细 ...

  6. PHP GD 生成图片验证码+session获取储存验证码

    以下分享一个PHP制作的图片验证码案例:案比例如以下图: 运用PHP GD具体请看:http://www.php.net/manual/zh/book.image.php 后台图片代码例如以下: &l ...

  7. Android中的MVP架构初探

    说来羞愧,MVP的架构模式已经在Android领域出现一两年了.可是到今天自己才開始Android领域中的MVP架构征程. 闲话不多说,開始吧. 一.架构演变概述 我记得我找第一份工作时,面试官问我& ...

  8. 38..Node.js工具模块---底层的网络通信--Net模块

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/ ...

  9. Objective-C基础笔记(7)Foundation中的常用结构体

    一.NSRange NSRange的定义: typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; N ...

  10. codeforces 204E. Little Elephant and Strings(广义后缀自动机,Parent树)

    传送门在这里. 大意: 给一堆字符串,询问每个字符串有多少子串在所有字符串中出现K次以上. 解题思路: 这种子串问题一定要见后缀自动机Parent树Dfs序统计出现次数都是套路了吧. 这道题统计子串个 ...