Skip to content

Accordion 折叠面板

可折叠的面板列表,适用于展示常见问题解答(FAQ)、详细条款或分步信息折叠。基于 Radix Vue 无头原语构建,支持多种粗野主义视觉变体。

预览

Preview

默认

BrutxUI 是一个面向 Vue 3 + Tailwind CSS 的 Neo-Brutalist(新粗野主义)风格 UI 组件库。它具有高对比度的边框、实心阴影、大胆的配色以及极具物理触感的交互设计。

扁平

BrutxUI 是一个面向 Vue 3 + Tailwind CSS 的 Neo-Brutalist(新粗野主义)风格 UI 组件库。

幽灵

BrutxUI 是一个面向 Vue 3 + Tailwind CSS 的 Neo-Brutalist(新粗野主义)风格 UI 组件库。

交互(interactive)

整个面板会出现阴影放大与位移,内容区也会带有轻微高亮,强化可点击的物理反馈。

安装

pnpm dlx brutx-vue@latest add accordion

用法

vue
<script setup>
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from 'brutx-ui-vue'
</script>

<template>
    <Accordion type="single" collapsible>
        <AccordionItem value="item-1">
            <AccordionTrigger>这里是面板标题 1</AccordionTrigger>
            <AccordionContent>
                这里是折叠面板内容 1。
            </AccordionContent>
        </AccordionItem>
        <AccordionItem value="item-2">
            <AccordionTrigger>这里是面板标题 2</AccordionTrigger>
            <AccordionContent>
                这里是折叠面板内容 2。
            </AccordionContent>
        </AccordionItem>
    </Accordion>
</template>

变体

可以使用 AccordionItemvariant 属性来设置不同的粗野主义风格:

变体说明
default默认带有黑粗边框和右下方偏移实心阴影
flat仅带有黑粗边框,无任何投影效果
ghost透明背景,无边框和阴影,简约展示
interactive在悬停时拥有阴影放大和位移,交互感更强
vue
<template>
    <AccordionItem value="item" variant="interactive">
        <AccordionTrigger>交互式折叠子项</AccordionTrigger>
        <AccordionContent>Hover 看看!有悬停偏移效果。</AccordionContent>
    </AccordionItem>
</template>

内容区域样式

AccordionContent 的样式会自动继承父级 AccordionItemvariant(通过 provide/inject 同步,无需手动指定)。所有变体共享基础类 border-t-3 border-brutal p-6 bg-brutal-bg text-brutal-fg,再按下表叠加差异样式:

变体内容区差异样式视觉效果
default(无附加样式)顶部黑色粗分隔线 + 默认背景色
flatbg-brutal-muted/30背景替换为半透明静音色,呼应扁平化风格
ghostborder-transparent顶部边框透明,整体更简约轻盈
interactivehover:bg-brutal-muted/20鼠标悬停时内容区出现轻微高亮,增强交互反馈

说明:变体同时作用于 AccordionItem(容器)、AccordionTrigger(触发器)与 AccordionContent(内容区)三层,保持整体视觉一致。

子组件

组件说明
Accordion根容器,管理展开状态和模式
AccordionItem单个面板子项,包含触发器和内容
AccordionTrigger面板触发器,点击切换展开/折叠
AccordionContent面板内容区域,展开时显示

Props

Accordion

属性类型默认值说明
type'single' | 'multiple'展开模式,单选或多选
collapsiblebooleanfalsetype="single" 模式下是否允许关闭全部子项
disabledbooleanfalse是否禁用整个折叠面板
modelValuestring | string[]当前选中的面板值,支持 v-model 双向绑定
defaultValuestring | string[]非受控模式下的默认选中值
dir'ltr' | 'rtl''ltr'阅读方向
orientation'vertical' | 'horizontal''vertical'折叠面板排列方向
unmountOnHidebooleantrue关闭时是否卸载内容 DOM
classstring自定义类名

AccordionItem

属性类型默认值说明
valuestring唯一的标示值(必填)
variant'default' | 'flat' | 'ghost' | 'interactive''default'视觉风格变体
disabledbooleanfalse是否禁用此子项
classstring自定义类名

AccordionTrigger

属性类型默认值说明
iconSize'xs' | 'sm' | 'default' | 'lg' | 'xl' | '2xl''lg'展开/折叠图标的尺寸
classstring自定义类名

AccordionContent

属性类型默认值说明
forceMountboolean强制挂载内容,用于配合外部动画库控制动画
classstring自定义类名

事件

事件参数说明
update:modelValuevalue: string | string[] | undefined展开状态改变时触发,支持 v-model

插槽

插槽作用域说明
Accordion#default折叠面板内容,通常包含 AccordionItem
AccordionItem#default面板子项内容,通常包含 AccordionTriggerAccordionContent
AccordionTrigger#default触发器文本内容
AccordionTrigger#icon自定义展开/折叠图标,默认为 ChevronDown
AccordionContent#default面板展开后显示的内容

可访问性

  • 键盘操作:支持 Space / Enter 触发展开/折叠,方向键在面板间导航
  • ARIA 属性:自动管理 aria-expandedaria-controlsrole="region"
  • 焦点管理:Tab 键聚焦触发器,焦点顺序与面板顺序一致

蛮力铸就。