vue实现展开收缩
Vue 实现展开收缩功能
在 Vue 中实现展开收缩功能可以通过多种方式完成,以下是几种常见的方法:
使用 v-show 指令
v-show 指令通过切换元素的 display 属性来控制元素的显示与隐藏。
<template>
<div>
<button @click="toggle">Toggle Content</button>
<div v-show="isExpanded">
This content can be toggled.
</div>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false
}
},
methods: {
toggle() {
this.isExpanded = !this.isExpanded
}
}
}
</script>
使用 v-if 指令
v-if 指令会完全销毁或重新创建 DOM 元素,适合内容较多或需要重新渲染的场景。
<template>
<div>
<button @click="toggle">Toggle Content</button>
<div v-if="isExpanded">
This content will be destroyed when hidden.
</div>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false
}
},
methods: {
toggle() {
this.isExpanded = !this.isExpanded
}
}
}
</script>
添加动画效果
可以通过 Vue 的 transition 组件为展开收缩添加动画效果。
<template>
<div>
<button @click="toggle">Toggle with Animation</button>
<transition name="fade">
<div v-show="isExpanded" class="content">
This content fades in and out.
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false
}
},
methods: {
toggle() {
this.isExpanded = !this.isExpanded
}
}
}
</script>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
.content {
padding: 10px;
background: #f0f0f0;
}
</style>
使用第三方组件库
UI 组件库如 Element UI、Vuetify 等提供了现成的展开收缩组件。

<template>
<div>
<el-collapse v-model="activeNames">
<el-collapse-item title="Title" name="1">
<div>Content</div>
</el-collapse-item>
</el-collapse>
</div>
</template>
<script>
export default {
data() {
return {
activeNames: ['1']
}
}
}
</script>
以上方法可以根据具体需求选择适合的实现方式。






