Skip to content

Collapse 折叠面板

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

基础用法

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

<template>
  <px-collapse v-model="activeNames" @change="handleChange">
    <px-collapse-item name="1" title="标题1">
      <div>
        大家好,初次见面! Monaka是一只普通的家猫, 危险等级为: C.A.T
        直接称呼Monaka, mnk都可以喵! 不知道为什么大家都觉得我的尾巴是撬棍,
        明明是柔软的尾巴喵! 🍗生日是8月17日,
        体重是6个苹果!喜欢吃的东西是肉和猫条喵, 讨厌的东西是黄爪,
        黄爪又吓人又难吃喵!
        平时喜欢画画和玩游戏喵!还喜欢美食鉴赏!唱歌是弱项不过会努力学习的喵!
        体能比较差, 害怕玩恐怖游戏, 但是又有点猎奇心态, 所以喜欢看别人玩嘻嘻喵!
        🍗喜欢大家在弹幕里发鸡腿喵!讨厌的话是mnk...mnk...寂しい... !! 🍗
      </div>
    </px-collapse-item>
    <px-collapse-item name="2" title="标题2"> 内容2 </px-collapse-item>
    <px-collapse-item name="3" title="标题3"> 内容3 </px-collapse-item>
  </px-collapse>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { type CollapseItemName } from '@mmt817/pixel-ui'

const activeNames = ref(['1'])

const handleChange = (val: CollapseItemName[]) => {
  console.log(val)
}
</script>

手风琴效果

每次只能展开一个面板

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

<template>
  <px-collapse v-model="activeNames" @change="handleChange" accordion>
    <px-collapse-item name="1" title="标题1">
      <div>
        大家好,初次见面! Monaka是一只普通的家猫, 危险等级为: C.A.T
        直接称呼Monaka, mnk都可以喵! 不知道为什么大家都觉得我的尾巴是撬棍,
        明明是柔软的尾巴喵! 🍗生日是8月17日,
        体重是6个苹果!喜欢吃的东西是肉和猫条喵, 讨厌的东西是黄爪,
        黄爪又吓人又难吃喵!
        平时喜欢画画和玩游戏喵!还喜欢美食鉴赏!唱歌是弱项不过会努力学习的喵!
        体能比较差, 害怕玩恐怖游戏, 但是又有点猎奇心态, 所以喜欢看别人玩嘻嘻喵!
        🍗喜欢大家在弹幕里发鸡腿喵!讨厌的话是mnk...mnk...寂しい... !! 🍗
      </div>
    </px-collapse-item>
    <px-collapse-item name="2" title="标题2"> 内容2 </px-collapse-item>
    <px-collapse-item name="3" title="标题3"> 内容3 </px-collapse-item>
  </px-collapse>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { type CollapseItemName } from '@mmt817/pixel-ui'

const activeNames = ref(['1'])

const handleChange = (val: CollapseItemName[]) => {
  console.log(val)
}
</script>

自定义面板标题

除了可以通过 title 属性来设置标题内容,也可以通过具名 title 插槽来自定义标题内容

<template>
  <px-collapse v-model="activeNames" @change="handleChange">
    <px-collapse-item name="1">
      <template #title>
        title插槽
        <px-icon icon="cog"></px-icon>
      </template>
      <div>
        大家好,初次见面! Monaka是一只普通的家猫, 危险等级为: C.A.T
        直接称呼Monaka, mnk都可以喵! 不知道为什么大家都觉得我的尾巴是撬棍,
        明明是柔软的尾巴喵! 🍗生日是8月17日,
        体重是6个苹果!喜欢吃的东西是肉和猫条喵, 讨厌的东西是黄爪,
        黄爪又吓人又难吃喵!
        平时喜欢画画和玩游戏喵!还喜欢美食鉴赏!唱歌是弱项不过会努力学习的喵!
        体能比较差, 害怕玩恐怖游戏, 但是又有点猎奇心态, 所以喜欢看别人玩嘻嘻喵!
        🍗喜欢大家在弹幕里发鸡腿喵!讨厌的话是mnk...mnk...寂しい... !! 🍗
      </div>
    </px-collapse-item>
    <px-collapse-item name="2" title="标题2"> 内容2 </px-collapse-item>
    <px-collapse-item name="3" title="标题3"> 内容3 </px-collapse-item>
  </px-collapse>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { type CollapseItemName } from '@mmt817/pixel-ui'

const activeNames = ref(['1'])

const handleChange = (val: CollapseItemName[]) => {
  console.log(val)
}
</script>

禁用面板

通过 disabled 属性来设置是否禁用面板

<template>
  <px-collapse v-model="activeNames" @change="handleChange">
    <px-collapse-item name="1" title="标题1">
      <div>
        大家好,初次见面! Monaka是一只普通的家猫, 危险等级为: C.A.T
        直接称呼Monaka, mnk都可以喵! 不知道为什么大家都觉得我的尾巴是撬棍,
        明明是柔软的尾巴喵! 🍗生日是8月17日,
        体重是6个苹果!喜欢吃的东西是肉和猫条喵, 讨厌的东西是黄爪,
        黄爪又吓人又难吃喵!
        平时喜欢画画和玩游戏喵!还喜欢美食鉴赏!唱歌是弱项不过会努力学习的喵!
        体能比较差, 害怕玩恐怖游戏, 但是又有点猎奇心态, 所以喜欢看别人玩嘻嘻喵!
        🍗喜欢大家在弹幕里发鸡腿喵!讨厌的话是mnk...mnk...寂しい... !! 🍗
      </div>
    </px-collapse-item>
    <px-collapse-item name="2" title="标题2" disabled> 内容2 </px-collapse-item>
    <px-collapse-item name="3" title="标题3"> 内容3 </px-collapse-item>
  </px-collapse>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { type CollapseItemName } from '@mmt817/pixel-ui'

const activeNames = ref(['1'])

const handleChange = (val: CollapseItemName[]) => {
  console.log(val)
}
</script>

自定义展开图标

通过 icon 属性来设置自定义展开图标

<template>
  <px-collapse v-model="activeNames" @change="handleChange">
    <px-collapse-item title="Title a" name="a" icon="cog">
      <div>折叠面板内容1</div>
    </px-collapse-item>
    <px-collapse-item title="Title b" name="b" icon="plane">
      <div>折叠面板内容2</div>
    </px-collapse-item>
    <px-collapse-item
      title="Title c disabled"
      name="c"
      disabled
      icon="times-solid"
    >
      <div>折叠面板内容3</div>
    </px-collapse-item>
    <px-collapse-item title="Title d" name="d" icon="star-crescent-solid">
      <div>折叠面板内容4</div>
    </px-collapse-item> </px-collapse
  >`
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { type CollapseItemName } from '@mmt817/pixel-ui'

const activeNames = ref(['a'])

const handleChange = (val: CollapseItemName[]) => {
  console.log(val)
}
</script>

Collapse API

Props

NameDescriptionTypeDefault
modelValue当前激活面板string[]/number[][]
accordion是否启用手风琴莫模式booleanfalse

Events

NameDescriptionType
change切换当前活动面板(val: CollapseItemName[]) => void

Slots

NameDescriptionChildren
default自定义默认内容CollapseItem

CollapseItem API

Props

NameDescriptionTypeDefault
name唯一标识符string/number-
title标题string''
disabled是否禁用booleanfalse
icon自定义展开图标string''

Slots

NameDescription
defaultCollapseItem 内容
titleCollapseItem 标题
本站访客数 人次 本站总访问量