TogglePanel是一个轻量级的jQuery插件,它提供了一种优雅的方式来在页面上创建可访问的、移动友好的可切换内容(如剧透和手风琴),并支持ARIA属性、角色和键盘交互。
1.启用一个按钮来显示/隐藏DIV元素。
- <button type="button" id="trigger-example">Toggle Panel-Example</button>
- <div id="panel-example" class="panel">
- Content To Toggle
- </div>
2.在页面加载时隐藏DIV元素。
- .panel {
- display: none;
- }
- .tgp__panel--is-opened {
- display: block !important;
- }
3.确定是否在页面加载时打开DIV面板。
- <button type="button" data-tgp-panel-id="trigger-example" data-tgp-opened="true">Toggle Panel-Example</button>
- <div id="panel-example" class="panel">
- Content To Toggle
- </div>
4.在jQuery之后加载TogglePanel插件。
- <script src="/path/to/cdn/jquery.min.js"></script>
- <script src="/path/to/jquery.toggle-panel.js"></script>
5.初始化插件并完成。
- $('#trigger-example').togglePanel({
- // options here
- });
6.使用这个插件来创建一个可访问的手风琴接口。
- <div id="wrapper">
- <div>
- <button type="button" id="trigger-1">Toggle Panel 1</button>
- <div id="panel-1" class="panel">
- Accordion 1
- </div>
- </div>
- <div>
- <button type="button" id="trigger-2">Toggle Panel 2</button>
- <div id="panel-2" class="panel">
- Accordion 2
- </div>
- </div>
- <div>
- <button type="button" id="trigger-3">Toggle Panel 3</button>
- <div id="panel-3" class="panel">
- Accordion 1
- </div>
- </div>
- </div>
- $('button').togglePanel({
- panel: 'next',
- mode: 'toggle',
- wrapper: $('#wrapper'),
- connect: true,
- });
7.所有默认插件选项。
- $('#trigger-example').togglePanel({
- // CSS class prefix
- prefix : 'tgp',
- // wrapper of connected panels
- wrapper: false,
- // if true, only one panel can be opened
- connect: false,
- // next panel or an unique panel ID
- panel: 'next',
- // trigger event: 'click' or 'mouseover'
- event: 'click',
- // If 'panel' setting = "function", this function will be called
- findPanel: function() {},
- // 'slide', 'toggle', or 'custom'
- mode: 'slide',
- // auto move focus to the opened panel
- autoFocus: true,
- // allow the trigger button to close its panel
- selfClose: true,
- // return focus to the trigger after closing
- returnFocus: true,
- // close panel after mouse leaving with delay
- autoHide: false,
- // delay in ms
- delay: 300,
- // disable clicks on the first levels
- disableFirstLevel: false,
- // remove titles from trigger buttons
- removeTitle: false,
- // close all panels on mobile devices
- smallScreenBreakpoint: 767,
- // labels for accessibility
- panelLabel: '',
- closeLabel: 'Collapse',
- openLabel: 'Expand',
- // If 'mode' setting = 'custom', these functions will be called
- customShow: function() {},
- customHide: function() {},
- });
8.回调。
- $('#trigger-example').togglePanel({
- onShow: function () {},
- onShowEnd: function () {},
- onHide: function () {},
- onHideEnd: function () {}
- });
9.API方法。
- // remove auto focus on init
- $('button[id^=trigger]').trigger('no-autofocus.tgp');
- // show panel
- $('button[id^=trigger]').trigger('show.tgp');
- // hide panel
- $('button[id^=trigger]').trigger('hide.tgp');
- // destroy
- $('button[id^=trigger]').trigger('destroy.tgp');