Skip to content
通用组件

折叠面板Accordion

原生 <details> 折叠块:+ / − 标记,展开后标题行加底色。Vue 版照 Naive 叫 AkCollapse。

Vue
实验import { AkCollapse, AkCollapseItem } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

原生 <details> 折叠块:标题行左侧主色 + / −,展开后标题行加底色和分隔线。常见问题、档案、默认收起的长表格。正文里编辑手写的 mw-collapsible 是另一回事,这里是模板 / 小部件用的。

基本 ​

Vue 版照 Naive UI 叫 AkCollapse + AkCollapseItem(同 n-collapse):v-model 是展开项 name 的数组;标题用 title 或 #header 插槽,展开内容写在默认插槽里(正文排版照常生效)。

手风琴 ​

accordion:同一时间只展开一项,展开一项时收起其他。

键盘与可访问性 ​

每项就是原生 <details> + <summary>:按钮语义、展开状态、Enter / 空格开合都是浏览器给的,不另加 aria-expanded;页内查找(Ctrl+F)命中收起的内容时浏览器会自动展开,v-model 跟着同步。<summary> 带 aria-controls 指向内容区。另外补了 WAI-ARIA Accordion 的可选键盘支持:

键行为
Enter / 空格展开 / 收起当前项
↓ / ↑移到下一项 / 上一项的标题(首尾循环)
Home / End第一项 / 最后一项的标题

Vue API ​

AkCollapse ​

属性类型默认说明
accordionbooleanfalse手风琴:同一时间只展开一项(展开一项时收起其他)
modelValueCollapseName[][]展开项的 name 数组
事件参数说明
update:modelValue[value: CollapseName[]]
插槽说明
default若干 AkCollapseItem

AkCollapseItem ​

属性类型默认说明
nameCollapseName—标识,= AkCollapse 的 v-model 数组里的值;不写时自动生成(只能靠点击开合)
titlestring—标题;要放图标 / 标签时改用 #header 插槽
插槽说明
header标题(代替 title)
default展开后的内容(正文排版照常生效)

CSS 实现 ​

模板直接输出 <details>,不需要脚本;要默认展开写 open。

块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有