当前位置:首页 > 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实例并定义数据 new Vue({ el: '#app', data: { letters…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

vue实现hover

vue实现hover

Vue 实现 hover 效果的方法 在 Vue 中实现 hover 效果可以通过多种方式实现,包括使用 CSS、Vue 指令或事件监听。以下是几种常见的方法: 使用 CSS :hover 伪类 通…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…