当前位置:首页 > VUE

vue div实现折叠效果

2026-02-24 20:01:39VUE

使用 Vue 实现折叠效果

通过 v-show 或 v-if 控制显隐

通过 Vue 的指令 v-showv-if 可以简单实现折叠效果。v-show 通过 CSS 的 display 属性切换,v-if 会动态添加或移除 DOM 元素。

<template>
  <div>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '展开' : '折叠' }}
    </button>
    <div v-show="!isCollapsed">
      这里是需要折叠的内容
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    }
  }
}
</script>

添加过渡动画

使用 Vue 的 <transition> 组件可以为折叠效果添加平滑的动画。

<template>
  <div>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '展开' : '折叠' }}
    </button>
    <transition name="fade">
      <div v-show="!isCollapsed">
        这里是需要折叠的内容
      </div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    }
  }
}
</script>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

动态高度过渡

如果需要实现高度变化的过渡效果,可以使用 max-height 结合 CSS 过渡。

<template>
  <div>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '展开' : '折叠' }}
    </button>
    <div class="collapse-content" :class="{ 'collapsed': isCollapsed }">
      这里是需要折叠的内容
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    }
  }
}
</script>

<style>
.collapse-content {
  max-height: 500px;
  overflow: hidden;
  transition: max-height 0.3s ease;
}
.collapse-content.collapsed {
  max-height: 0;
}
</style>

使用第三方库

如果需要更复杂的折叠效果,可以借助第三方库如 vue-collapsev-collapse

安装 vue-collapse

npm install vue-collapse

示例代码:

<template>
  <div>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '展开' : '折叠' }}
    </button>
    <vue-collapse v-model="isCollapsed">
      <div>
        这里是需要折叠的内容
      </div>
    </vue-collapse>
  </div>
</template>

<script>
import { VueCollapse } from 'vue-collapse'

export default {
  components: {
    VueCollapse
  },
  data() {
    return {
      isCollapsed: false
    }
  }
}
</script>

总结

以上方法可以根据需求选择:

vue div实现折叠效果

  • 简单显隐:v-showv-if
  • 平滑过渡:<transition> 组件
  • 高度动画:动态设置 max-height
  • 复杂需求:第三方库如 vue-collapse

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

相关文章

vue实现用户信息表

vue实现用户信息表

Vue 实现用户信息表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目: npm install -g @vue/cli vue create user-info-tabl…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue实现modal

vue实现modal

Vue 实现 Modal 弹窗组件 使用 Vue 实现 Modal 弹窗组件可以通过多种方式,包括原生 Vue 组件、第三方库或自定义指令。以下是几种常见方法: 原生 Vue 组件实现 创建一个基础…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。 基本…