当前位置:首页 > VUE

vue实现slideUp动画效果

2026-01-23 12:50:31VUE

使用 Vue Transition 实现 SlideUp 动画

Vue 的 <transition> 组件可以结合 CSS 实现 slideUp 效果。通过定义进入和离开的动画类,控制元素的高度和透明度变化。

vue实现slideUp动画效果

<template>
  <button @click="show = !show">Toggle Slide</button>
  <transition name="slide-up">
    <div v-if="show" class="box">Content to slide up</div>
  </transition>
</template>

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

<style>
.slide-up-enter-active,
.slide-up-leave-active {
  transition: all 0.3s ease;
}

.slide-up-enter-from,
.slide-up-leave-to {
  opacity: 0;
  transform: translateY(20px);
}
</style>

使用第三方库(如 Velocity.js)

对于更复杂的动画效果,可以集成 Velocity.js 等动画库。

vue实现slideUp动画效果

<template>
  <button @click="show = !show">Toggle Slide</button>
  <transition
    @enter="enter"
    @leave="leave"
    :css="false"
  >
    <div v-if="show" class="box">Content with Velocity.js</div>
  </transition>
</template>

<script>
import Velocity from 'velocity-animate'

export default {
  data() {
    return {
      show: false
    }
  },
  methods: {
    enter(el, done) {
      Velocity(el, { opacity: 1, translateY: 0 }, { duration: 300, complete: done })
    },
    leave(el, done) {
      Velocity(el, { opacity: 0, translateY: '20px' }, { duration: 300, complete: done })
    }
  }
}
</script>

动态高度 SlideUp(适用于不确定高度的元素)

通过 JavaScript 动态计算元素高度,实现更平滑的展开/折叠效果。

<template>
  <button @click="toggle">Toggle Slide</button>
  <div class="slide-container">
    <div ref="content" class="slide-content" :style="{ height }">
      <p>Dynamic content with variable height</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOpen: false,
      height: '0px'
    }
  },
  methods: {
    toggle() {
      this.isOpen = !this.isOpen
      if (this.isOpen) {
        this.height = `${this.$refs.content.scrollHeight}px`
      } else {
        this.height = '0px'
      }
    }
  }
}
</script>

<style>
.slide-container {
  overflow: hidden;
}
.slide-content {
  transition: height 0.3s ease;
}
</style>

使用 CSS Grid 实现 SlideUp

CSS Grid 的 grid-template-rows 属性可以实现平滑的高度过渡效果。

<template>
  <button @click="isOpen = !isOpen">Toggle Grid Slide</button>
  <div class="grid-container" :class="{ 'is-open': isOpen }">
    <div class="grid-content">Content inside CSS Grid</div>
  </div>
</template>

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

<style>
.grid-container {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s ease;
}

.grid-container.is-open {
  grid-template-rows: 1fr;
}

.grid-content {
  overflow: hidden;
}
</style>

标签: 效果动画
分享给朋友:

相关文章

h5实现左右滚动效果

h5实现左右滚动效果

使用CSS实现横向滚动 在HTML5中实现左右滚动效果,可以通过CSS的overflow-x属性配合white-space或flex布局实现。以下是一个基础示例: <div class="sc…

vue实现滑动效果

vue实现滑动效果

Vue 实现滑动效果的方法 在 Vue 中实现滑动效果可以通过多种方式,包括使用 CSS 过渡、第三方动画库或直接操作 DOM。以下是几种常见的方法: 使用 CSS 过渡和 Vue 的 <tr…

vue实现加载动画

vue实现加载动画

Vue 实现加载动画的方法 在 Vue 中实现加载动画可以通过多种方式完成,以下是一些常见的方法: 使用 CSS 动画 通过 CSS 定义动画效果,结合 Vue 的动态类绑定实现加载动画。以下是一个…

vue实现tab效果

vue实现tab效果

Vue 实现 Tab 效果的方法 使用动态组件和 v-if 通过 v-if 或 v-show 控制不同标签内容的显示与隐藏,结合点击事件切换当前激活的标签页。 <template>…

vue实现taggle效果

vue实现taggle效果

Vue实现Toggle效果 在Vue中实现Toggle效果可以通过多种方式完成,以下是几种常见的方法: 方法1:使用v-model和v-show/v-if 通过v-model绑定一个布尔值,结合v…

vue负责动画实现

vue负责动画实现

Vue 动画实现方法 Vue 提供了多种方式来实现动画效果,主要通过内置组件和第三方库支持。 使用 Vue 内置过渡组件 Vue 的 transition 和 transition-group 组件…