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為容器 IDtarget為要伸縮的容器 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 來調用:
<h4 data-am-collapse="{parent: '#accordion', target: '#do-not-say-1'}"></h4>
其中:
parent為容器 IDtarget為要伸縮的容器 ID
如果觸發元素為 <a> 元素,可以把 target 設置在 href 屬性里。
<a data-am-collapse="{parent: '#accordion'}" href="#do-not-say-1"> ... </a>
莫言 - 你不懂我,我不怪你 #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>
折疊菜單
使用時注意目標元素外面應該有一個容器,以便動畫執行時計算高度。
<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。
<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:
<button data-am-collapse="{target: '#my-collapse'}"></button>
通過 JS
使用方法:
$('#myCollapse').collapse()
方法
$().collapse(options)- 綁定元素展開/折疊操作
$('#myCollapse').collapse({ toggle: false })
$().collapse('toggle')- 切換面板狀態$().collapse('open')- 展開面板$().collapse('close')- 關閉面板
選項
| 參數 | 類型 | 默認 | 描述 |
|---|---|---|---|
parent |
選擇符 | false |
如果設置了 parent 參數,且該容器下有多個可折疊的面板時,展開一個面板會關閉其它展開的面板。換言之,如果想讓多個面板可以都處於展開狀態,那不設置這個參數即可。 |
toggle |
布爾值 | true |
交替執行展開/關閉操作 |
自定義事件
自定義事件在折疊的元素上觸發,以上面的折疊菜單為例,#collapse-nav 觸發自定義事件:
$('#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 計算元素高度的方式有點奇葩,暫時只能通過上面的方式規避。
Issue 列表
