Skip to content

Collapse 折叠面板

通过折叠面板收纳内容区域

基础用法

同时展开多个面板,面板之间不影响

静夜思
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
春晓
登鹳雀楼
<script lang="ts" setup>
import { ref } from 'vue'
import SiCollapse from '@/components/Collapse/Collapse.vue'
import SiCollapseItem from '@/components/Collapse/CollapseItem.vue'
import type { NameType } from '@/components/Collapse/types.ts'

const openValue = ref(['1'])
function handleChange(val: NameType) {
  console.log(val)
}
</script>

<template>
  <SiCollapse
    v-model="openValue"
    class="si-collapse"
    @change="handleChange"
  >
    <SiCollapseItem title="静夜思" name="1">
      <div>
        床前明月光,疑是地上霜。
      </div>
      <div>
        举头望明月,低头思故乡。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="春晓" name="2">
      <div>
        春眠不觉晓,处处闻啼鸟。
      </div>
      <div>
        夜来风雨声,花落知多少。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="登鹳雀楼" name="3">
      <div>
        黄河入海流
      </div>
      <div>
        欲穷千里目
      </div>
      <div>
        更上一层楼
      </div>
    </SiCollapseItem>
  </SiCollapse>
</template>

<style>

</style>

手风琴效果

每次只能展开一个面板

通过 accordion 属性来设置是否以手风琴模式显示

静夜思
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
春晓
登鹳雀楼
<script lang="ts" setup>
import { ref } from 'vue'
import SiCollapse from '@/components/Collapse/Collapse.vue'
import SiCollapseItem from '@/components/Collapse/CollapseItem.vue'

const openValue = ref(['1'])
</script>

<template>
  <SiCollapse
    v-model="openValue"
    accordion
  >
    <SiCollapseItem title="静夜思" name="1">
      <div>
        床前明月光,疑是地上霜。
      </div>
      <div>
        举头望明月,低头思故乡。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="春晓" name="2">
      <div>
        春眠不觉晓,处处闻啼鸟。
      </div>
      <div>
        夜来风雨声,花落知多少。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="登鹳雀楼" name="3">
      <div>
        黄河入海流
      </div>
      <div>
        欲穷千里目
      </div>
      <div>
        更上一层楼
      </div>
    </SiCollapseItem>
  </SiCollapse>
</template>

自定义面板标题

除了可以通过 title 属性以外,还可以通过具名 slot 来实现自定义面板的标题内容,以实现增加图标等效果。

静夜思
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
春晓
登鹳雀楼
<script lang="ts" setup>
import { ref } from 'vue'
import SiCollapse from '@/components/Collapse/Collapse.vue'
import SiCollapseItem from '@/components/Collapse/CollapseItem.vue'
import Icon from '@/components/Icon/Icon.vue'
import type { NameType } from '@/components/Collapse/types.ts'

const openValue = ref(['1'])
function handleChange(val: NameType) {
  console.log(val)
}
</script>

<template>
  <SiCollapse
    v-model="openValue"
    accordion
    @change="handleChange"
  >
    <SiCollapseItem name="1">
      <template #title>
        <div>
          静夜思<Icon icon="fa-house" class="header-icon" />
        </div>
      </template>
      <div>
        床前明月光,疑是地上霜。
      </div>
      <div>
        举头望明月,低头思故乡。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="春晓" name="2">
      <div>
        春眠不觉晓,处处闻啼鸟。
      </div>
      <div>
        夜来风雨声,花落知多少。
      </div>
    </SiCollapseItem>
    <SiCollapseItem title="登鹳雀楼" name="3">
      <div>
        黄河入海流
      </div>
      <div>
        欲穷千里目
      </div>
      <div>
        更上一层楼
      </div>
    </SiCollapseItem>
  </SiCollapse>
</template>

<style>
.header-icon {
  margin-left: 5px;
}
</style>

Collapse API

Collapse Attributes

属性名详情类型默认值
model-value / v-model当前活动面板array[]
accordion是否手风琴模式booleanfalse

Collapse Events

事件名说明类型
change切换当前活动面板,类型是arrayFunction

Collapse Slots

插槽名Description子标签
default自定义默认内容Collapse Item

Collapse Item API

Collapse Item Attributes

属性名说明类型默认值
name唯一标志符string / number
title面板标题string''
disabled是否禁用booleanfalse

Collapse Item Slot

插槽名说明Type
defaultCollapse Item 的内容
titleCollapse Item 的标题

基于 MIT 许可发布