折叠面板(Collapse)
轻松切换页面上几乎所有内容的可见性。 包括对制作手风琴的支持。
用法
其他元素可以使用 v-b-toggle
指令轻松切 <b-collapse>
组件。
初始可见性(开始扩展)
要使 <b-collapse>
最初显示,请设置 visible
属性:
默认情况下,初始可见的塌陷不会在安装时进行动画处理。要在挂载上启用折叠展开动画(visible
或 v-model
为 true
时),请将 appear
道具设置为 <b-collapse>
。
v-model
支持
组件的折叠(可见)状态也可以使用 v-model
设置,该 v-model 在内部绑定到 visible
属性。
请注意,使用 v-model
控制 <b-collapse>
时,不会自动将 aria-*
属性和 collapsed
类自动放置在触发按钮上(使用 v-b-toggle
指令时就是这种情况)。在此示例中,我们 必须自己控制属性 以获得适当的可访问性支持。
触发多个折叠元素
您甚至可以通过使用修饰符提供多个目标ID,通过单个 v-b-toggle
来折叠多个 <b-collapse>
组件:
手风琴支持
通过 accordion
属性提供手风琴组标识符,将一组 <b-collapse>
组件转变为手风琴。请注意,一次手风琴组中只有一个折叠可以打开。
注意:
- 使用手风琴模式时,请确保将触发元素和
<b-collapse>
组件放置在具有 role="tablist"
的元素内,并按顺序在每个触发元素的容器上设置 role="tab"
(每个触发元素都应包装) 帮助屏幕阅读器用户浏览手风琴组。
- 如果在手风琴模式下使用
v-model
的功能,请勿将手风琴组中所有折叠的 v-model
或 visible
属性绑定到同一变量!
- 确保在手风琴组中最多只有一个
<b-collapse>
将 visible
属性和/或 v-model
设置为 true
。一次只能打开手风琴组中的一个折叠。
根据折叠状态在切换按钮中隐藏和显示内容
当使用 v-b-toggle
指令时,collapsed
类将在折叠关闭时自动放置在触发元素上,并在打开时自动删除。 您可以使用此类通过自定义CSS在切换中显示或隐藏内容:
HTML标记示例:
自定义CSS示例:
'Global' $root 实例事件
使用 $root
实例可以在使用 <b-collapse>
的组件之外的某个地方发出和监听事件。 简而言之,$root
的行为类似于全局事件的发射器和侦听器。 有关 $root
实例的详细信息可以在 Vue官方文档 中找到。
通过 $root 事件监听折叠状态更改
要监听任何折叠状态更改,请使用:
其中 collapseId
是折叠ID,它更改了状态;isJustShown
为 true / false,即显示/隐藏的折叠。
通过 $root 事件切换折叠
要切换(打开/关闭)特定的折叠,请传递折叠 id
:
可选范围的默认插槽
New in v2.2.0
默认插槽可以选择范围。 以下作用域属性可用:
属性 |
类型 |
描述 |
visible |
Boolean |
可见的折叠状态 |
close |
Function |
当被调用时,将关闭折叠 |
辅助功能
v-b-toggle
指令将自动将ARIA属性 aria-controls
和 aria-expanded
添加到该指令出现的组件上(以及添加未扩展时 collapsed
类)。aria-expanded
将反映目标 <b-collapse>
组件的状态,而 aria-controls
将设置为目标 <b-collapse>
组件的ID。
如果使用 v-model
而不是指令 v-b-toggle
来设置可见状态,则需要在 toggle 元素上自己添加 aria-controls
和其他适当的属性和类。
尽管 v-b-toggle
指令几乎可以放置在任何HTML元素或Vue组件上,但建议使用按钮或链接(或类似组件)作为切换器。 否则,键盘或屏幕阅读器用户可能无法访问触发器元素。 如果确实将它们放置在按钮或链接(或类似组件)以外的其他物体上,则应添加属性 tabindex="0"
和 role="button"
以允许辅助技术的用户使用触发元素。
使用手风琴模式时,请确保将触发元素和 <b-collapse>
组件放置在具有 role="tablist"
的元素内,并在每个触发元素的容器上设置 role="tab"
,以帮助屏幕阅读器用户浏览手风琴组。不幸的是,BootstrapVue无法自动为您应用这些角色,因为这取决于您的最终文档标记。
组件参考
属性
属性 |
类型 |
默认值 |
描述 |
id |
String |
|
用于在呈现的内容上设置“ id”属性,并用作根据需要生成任何其他元素ID的基础 |
is-nav |
Boolean |
false |
设置时,表示折叠是导航栏的顶部,启用某些功能以支持导航栏 |
accordion |
String |
|
该折叠所属的手风琴组的名称 |
visible v-model |
Boolean |
false |
当为“ true”时,扩展折叠 |
tag |
String |
'div' |
指定要呈现的HTML标签,而不是默认标签 |
appear v2.2.0+ |
Boolean |
false |
设置后,'visible' 属性在挂载时为 true ,将在初始挂载时设置动画 |
v-model
插槽
插槽名称 |
描述 |
范围 |
default v2.2.0+ |
|
|
Events
事件 |
参数 |
描述 |
input |
visible - 如果折叠可见,则为 true
|
用于更新 v-model |
show |
|
折叠开始打开时发出 |
shown |
|
折叠完成打开时发出 |
hide |
|
折叠开始关闭时发出 |
hidden |
|
折叠完成关闭时发出 |
bv::collapse::state |
id - 更改状态折叠ID
state - true 或 false,即打开或关闭
|
折叠更改其状态时在 $root 上发出 |
$root
事件监听器
您可以通过在 $root 上发出以下事件来控制 <b-collapse>
:
事件 |
参数 |
描述 |
bv::toggle::collapse |
id - 折叠ID进行切换
|
在$root上发出此事件时,以指定的ID切换可见的折叠状态 |
导入单个组件
您可以通过以下指定的导出将各个组件导入到您的项目中:
组件 |
命名输出 |
导入路径 |
<b-collapse> |
BCollapse |
bootstrap-vue |
示例:
导入单个指令
您可以通过以下命名的导出将单个指令导入到您的项目中:
指令 |
命名输出 |
导入路径 |
v-b-toggle |
VBToggle |
bootstrap-vue |
示例:
作为Vue.js插件导入
该插件包括上面列出的所有单个组件和指令。插件还包括任何组件别名。
命名输出 |
导入路径 |
CollapsePlugin |
bootstrap-vue |
示例: