当前位置:首页 > VUE

vue实现折叠效果

2026-03-29 10:09:01VUE

使用 Vue 实现折叠效果的方法

动态绑定 class 和 v-show

通过 v-showv-if 控制元素的显示与隐藏,结合 CSS 过渡动画实现折叠效果。
HTML 部分:

<template>
  <div>
    <button @click="toggle">Toggle</button>
    <div v-show="isCollapsed" class="collapse-content">
      Content to be collapsed
    </div>
  </div>
</template>

JavaScript 部分:

<script>
export default {
  data() {
    return {
      isCollapsed: false
    };
  },
  methods: {
    toggle() {
      this.isCollapsed = !this.isCollapsed;
    }
  }
};
</script>

CSS 部分:

.collapse-content {
  transition: all 0.3s ease;
}

使用 Vue Transition 组件

利用 Vue 内置的 <transition> 组件实现平滑的折叠动画效果。
HTML 部分:

<template>
  <div>
    <button @click="toggle">Toggle</button>
    <transition name="slide">
      <div v-show="isCollapsed" class="collapse-content">
        Content to be collapsed
      </div>
    </transition>
  </div>
</template>

CSS 部分:

.slide-enter-active, .slide-leave-active {
  transition: max-height 0.3s ease;
}
.slide-enter, .slide-leave-to {
  max-height: 0;
  overflow: hidden;
}
.slide-enter-to, .slide-leave {
  max-height: 1000px;
}

第三方库:vue-collapse

对于更复杂的折叠需求,可以使用 vue-collapse 等第三方库。
安装:

npm install vue-collapse --save

使用示例:

<template>
  <div>
    <button @click="toggle">Toggle</button>
    <vue-collapse :show="isCollapsed">
      <div class="collapse-content">
        Content to be collapsed
      </div>
    </vue-collapse>
  </div>
</template>
<script>
import { VueCollapse } from 'vue-collapse';
export default {
  components: { VueCollapse },
  data() {
    return { isCollapsed: false };
  },
  methods: {
    toggle() {
      this.isCollapsed = !this.isCollapsed;
    }
  }
};
</script>

动态高度过渡

通过动态计算内容高度实现平滑折叠动画。
HTML 部分:

<template>
  <div>
    <button @click="toggle">Toggle</button>
    <div
      class="collapse-content"
      :style="{ height: isCollapsed ? contentHeight + 'px' : '0' }"
      ref="content"
    >
      Content to be collapsed
    </div>
  </div>
</template>

JavaScript 部分:

<script>
export default {
  data() {
    return {
      isCollapsed: false,
      contentHeight: 0
    };
  },
  mounted() {
    this.contentHeight = this.$refs.content.scrollHeight;
  },
  methods: {
    toggle() {
      this.isCollapsed = !this.isCollapsed;
    }
  }
};
</script>

CSS 部分:

vue实现折叠效果

.collapse-content {
  overflow: hidden;
  transition: height 0.3s ease;
}

以上方法可以根据实际需求选择,动态绑定 class 和 v-show 适合简单场景,而 Transition 组件和动态高度过渡能实现更流畅的动画效果。

标签: 效果vue
分享给朋友:

相关文章

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

vue jwt实现

vue jwt实现

Vue JWT 实现方法 安装依赖 确保项目中安装了 jsonwebtoken(后端)和 axios(前端)。若使用 Vue 3,可搭配 vue-router 和 pinia(或 vuex)管理状态。…