將一組內(nèi)容放置在多個折疊面板中,點擊面板的標題可以展開或收縮其內(nèi)容。
通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊。
import { createApp } from 'vue';
import { Collapse, CollapseItem } from 'vant';
const app = createApp();
app.use(Collapse);
app.use(CollapseItem);
通過 ?v-model
? 控制展開的面板列表,?activeNames
? 為數(shù)組格式。
<van-collapse v-model="activeNames">
<van-collapse-item title="標題1" name="1">
代碼是寫出來給人看的,附帶能在機器上運行。
</van-collapse-item>
<van-collapse-item title="標題2" name="2">
技術無非就是那些開發(fā)它的人的共同靈魂。
</van-collapse-item>
<van-collapse-item title="標題3" name="3">
在代碼閱讀過程中人們說臟話的頻率是衡量代碼質量的唯一標準。
</van-collapse-item>
</van-collapse>
import { ref } from 'vue';
export default {
setup() {
const activeNames = ref(['1']);
return { activeNames };
},
};
通過 ?accordion
? 可以設置為手風琴模式,最多展開一個面板,此時 ?activeName
? 為字符串格式。
<van-collapse v-model="activeName" accordion>
<van-collapse-item title="標題1" name="1">
代碼是寫出來給人看的,附帶能在機器上運行。
</van-collapse-item>
<van-collapse-item title="標題2" name="2">
技術無非就是那些開發(fā)它的人的共同靈魂。
</van-collapse-item>
<van-collapse-item title="標題3" name="3">
在代碼閱讀過程中人們說臟話的頻率是衡量代碼質量的唯一標準。
</van-collapse-item>
</van-collapse>
import { ref } from 'vue';
export default {
setup() {
const activeName = ref('1');
return { activeName };
},
};
通過 ?disabled
? 屬性來禁用單個面板。
<van-collapse v-model="activeNames">
<van-collapse-item title="標題1" name="1">
代碼是寫出來給人看的,附帶能在機器上運行。
</van-collapse-item>
<van-collapse-item title="標題2" name="2" disabled>
技術無非就是那些開發(fā)它的人的共同靈魂。
</van-collapse-item>
<van-collapse-item title="標題3" name="3" disabled>
在代碼閱讀過程中人們說臟話的頻率是衡量代碼質量的唯一標準。
</van-collapse-item>
</van-collapse>
通過 ?title
? 插槽可以自定義標題欄的內(nèi)容。
<van-collapse v-model="activeNames">
<van-collapse-item name="1">
<template #title>
<div>標題1 <van-icon name="question-o" /></div>
</template>
代碼是寫出來給人看的,附帶能在機器上運行。
</van-collapse-item>
<van-collapse-item title="標題2" name="2" icon="shop-o">
技術無非就是那些開發(fā)它的人的共同靈魂。
</van-collapse-item>
</van-collapse>
import { ref } from 'vue';
export default {
setup() {
const activeNames = ref(['1']);
return { activeNames };
},
};
通過 ?Collapse
? 實例上的 ?toggleAll
? 方法可以實現(xiàn)全部展開與全部切換。
<van-collapse v-model="activeNames">
<van-collapse-item title="標題1" name="1">
代碼是寫出來給人看的,附帶能在機器上運行。
</van-collapse-item>
<van-collapse-item title="標題2" name="2">
技術無非就是那些開發(fā)它的人的共同靈魂。
</van-collapse-item>
<van-collapse-item title="標題3" name="3">
在代碼閱讀過程中人們說臟話的頻率是衡量代碼質量的唯一標準。
</van-collapse-item>
</van-collapse>
<van-button type="primary" @click="openAll">全部展開</van-button>
<van-button type="primary" @click="toggleAll">全部切換</van-button>
import { ref } from 'vue';
export default {
setup() {
const activeNames = ref(['1']);
const collapse = ref(null);
const openAll = () => {
collapse.value.toggleAll(true);
}
const toggleAll = () => {
collapse.value.toggleAll();
},
return {
activeNames,
openAll,
toggleAll,
collapse,
};
},
};
Tips: 手風琴模式下無法使用 toggleAll 方法。
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
v-model | 當前展開面板的 name | 手風琴模式:number | string
非手風琴模式:(number | string)[] |
- |
accordion | 是否開啟手風琴模式 | boolean | false
|
border | 是否顯示外邊框 | boolean | true
|
事件名 | 說明 | 回調(diào)參數(shù) |
---|---|---|
change | 切換面板時觸發(fā) | activeNames: 類型與 v-model 綁定的值一致 |
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
name | 唯一標識符,默認為索引值 | number | string | index
|
icon | 標題欄左側圖標名稱或圖片鏈接,等同于 Icon 組件的 name 屬性 | string | - |
size | 標題欄大小,可選值為 large
|
string | - |
title | 標題欄左側內(nèi)容 | number | string | - |
value | 標題欄右側內(nèi)容 | number | string | - |
label | 標題欄描述信息 | number | string | - |
border | 是否顯示內(nèi)邊框 | boolean | true
|
is-link | 是否展示標題欄右側箭頭并開啟點擊反饋 | boolean | true
|
disabled | 是否禁用面板 | boolean | false
|
readonly v3.0.12
|
是否為只讀狀態(tài),只讀狀態(tài)下無法操作面板 | boolean | false
|
lazy-render v3.4.5
|
是否在首次展開時才渲染面板內(nèi)容 | boolean | true
|
title-class | 左側標題額外類名 | string | - |
value-class | 右側內(nèi)容額外類名 | string | - |
label-class | 描述信息額外類名 | string | - |
通過 ref 可以獲取到 CollapseItem 實例并調(diào)用實例方法,詳見組件實例方法。
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
toggleAll v3.5.3
|
切換所有面板展開狀態(tài),傳 true 為全部展開,false 為全部收起,不傳參為全部切換 |
options?: boolean | object | - |
import { ref } from 'vue';
import type { CollapseInstance } from 'vant';
const collapseRef = ref<CollapseInstance>();
// 全部切換
collapseRef.value?.toggleAll();
// 全部展開
collapseRef.value?.toggleAll(true);
// 全部收起
collapseRef.value?.toggleAll(false);
// 全部全部切換,并跳過禁用的復選框
collapseRef.value?.toggleAll({
skipDisabled: true,
});
// 全部選中,并跳過禁用的復選框
collapseRef.value?.toggleAll({
expanded: true,
skipDisabled: true,
});
通過 ref 可以獲取到 CollapseItem 實例并調(diào)用實例方法,詳見組件實例方法。
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
toggle | 切換面板展開狀態(tài),傳 true 為展開,false 為收起,不傳參為切換 |
expand?: boolean | - |
組件導出以下類型定義:
import type {
CollapseProps,
CollapseItemProps,
CollapseItemInstance,
CollapseToggleAllOptions,
} from 'vant';
?CollapseItemInstance
? 是組件實例的類型,用法如下:
import { ref } from 'vue';
import type { CollapseItemInstance } from 'vant';
const collapseItemRef = ref<CollapseItemInstance>();
collapseItemRef.value?.toggle();
名稱 | 說明 |
---|---|
default | 面板內(nèi)容 |
title | 自定義標題欄左側內(nèi)容 |
value | 自定義標題欄右側內(nèi)容 |
label v3.1.1
|
自定義標題欄描述信息 |
icon | 自定義標題欄左側圖標 |
right-icon | 自定義標題欄右側圖標 |
組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請參考 ConfigProvider 組件。
名稱 | 默認值 | 描述 |
---|---|---|
--van-collapse-item-duration | var(--van-duration-base) | - |
--van-collapse-item-content-padding | var(--van-padding-sm) var(--van-padding-md) | - |
--van-collapse-item-content-font-size | var(--van-font-size-md) | - |
--van-collapse-item-content-line-height | 1.5 | - |
--van-collapse-item-content-text-color | var(--van-text-color-2) | - |
--van-collapse-item-content-background | var(--van-background-2) | - |
--van-collapse-item-title-disabled-color | var(--van-text-color-3) | - |
更多建議: