当前位置:首页 > VUE

vue实现收缩表单

2026-01-18 10:31:38VUE

Vue 实现收缩表单的方法

使用 v-show 或 v-if 控制显示

通过 Vue 的指令 v-showv-if 可以轻松实现表单的收缩效果。v-show 通过 CSS 的 display 属性控制显示,适合频繁切换的场景;v-if 会直接销毁和重建 DOM,适合不频繁切换的场景。

<template>
  <div>
    <button @click="toggleForm">Toggle Form</button>
    <form v-show="isFormVisible">
      <input type="text" placeholder="Name">
      <input type="email" placeholder="Email">
    </form>
  </div>
</template>

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

结合 CSS 过渡动画

通过 Vue 的 <transition> 组件可以实现平滑的展开和收缩动画效果。

vue实现收缩表单

<template>
  <div>
    <button @click="toggleForm">Toggle Form</button>
    <transition name="slide">
      <form v-show="isFormVisible">
        <input type="text" placeholder="Name">
        <input type="email" placeholder="Email">
      </form>
    </transition>
  </div>
</template>

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

<style>
.slide-enter-active, .slide-leave-active {
  transition: max-height 0.5s ease;
}
.slide-enter, .slide-leave-to {
  max-height: 0;
  overflow: hidden;
}
.slide-enter-to, .slide-leave {
  max-height: 500px;
}
</style>

动态调整表单高度

通过动态绑定样式,可以实现更灵活的收缩效果,比如调整高度或宽度。

vue实现收缩表单

<template>
  <div>
    <button @click="toggleForm">Toggle Form</button>
    <form :style="{ height: isFormVisible ? 'auto' : '0', overflow: 'hidden' }">
      <input type="text" placeholder="Name">
      <input type="email" placeholder="Email">
    </form>
  </div>
</template>

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

使用第三方库

如果需要更复杂的动画效果,可以结合第三方动画库如 animate.css

<template>
  <div>
    <button @click="toggleForm">Toggle Form</button>
    <transition
      enter-active-class="animate__animated animate__fadeInDown"
      leave-active-class="animate__animated animate__fadeOutUp"
    >
      <form v-show="isFormVisible">
        <input type="text" placeholder="Name">
        <input type="email" placeholder="Email">
      </form>
    </transition>
  </div>
</template>

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

表单数据的处理

在收缩表单时,可能需要清除表单数据或保留数据。可以通过 v-model 绑定数据,并在适当的时候重置。

<template>
  <div>
    <button @click="toggleForm">Toggle Form</button>
    <form v-show="isFormVisible">
      <input type="text" v-model="formData.name" placeholder="Name">
      <input type="email" v-model="formData.email" placeholder="Email">
    </form>
    <button @click="resetForm" v-show="isFormVisible">Reset</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFormVisible: false,
      formData: {
        name: '',
        email: ''
      }
    }
  },
  methods: {
    toggleForm() {
      this.isFormVisible = !this.isFormVisible
    },
    resetForm() {
      this.formData = {
        name: '',
        email: ''
      }
    }
  }
}
</script>

以上方法可以根据实际需求选择适合的方式实现表单的收缩效果。

标签: 表单vue
分享给朋友:

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

使用 Vue 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="modal-…

vue实现动态

vue实现动态

Vue 实现动态路由的方法 在 Vue 中实现动态路由通常涉及以下几个关键步骤: 使用 Vue Router 的动态路由匹配 通过 Vue Router 的 :param 语法可以实现动态路由匹配…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现前端

vue实现前端

Vue 实现前端的核心方法与步骤 安装 Vue 项目 使用 Vue CLI 或 Vite 创建项目。Vue CLI 是传统构建工具,Vite 是新一代轻量级工具。 npm init vue@l…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单文…