当前位置:首页 > VUE

vue实现slideup效果例子

2026-02-23 17:18:15VUE

Vue 实现 SlideUp 效果示例

在 Vue 中实现 SlideUp 效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法:

使用 CSS Transition 和 Vue 的 v-if/v-show

通过 Vue 的 v-ifv-show 控制元素显示隐藏,结合 CSS 过渡实现滑动效果。

<template>
  <div>
    <button @click="toggle">Toggle Slide</button>
    <transition name="slide">
      <div v-if="isVisible" class="content">
        This content will slide up and down
      </div>
    </transition>
  </div>
</template>

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

<style>
.slide-enter-active, .slide-leave-active {
  transition: all 0.5s ease;
}
.slide-enter, .slide-leave-to {
  transform: translateY(100%);
  opacity: 0;
}
.content {
  height: 100px;
  background: lightblue;
  margin-top: 10px;
}
</style>

使用 Vue Transition 的 JavaScript 钩子

通过 JavaScript 钩子实现更复杂的动画控制。

<template>
  <div>
    <button @click="toggle">Toggle Slide</button>
    <transition
      @before-enter="beforeEnter"
      @enter="enter"
      @leave="leave"
      :css="false"
    >
      <div v-if="isVisible" class="content">
        JavaScript hook controlled animation
      </div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: false
    }
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible
    },
    beforeEnter(el) {
      el.style.transform = 'translateY(100%)'
      el.style.opacity = '0'
    },
    enter(el, done) {
      const animation = el.animate([
        { transform: 'translateY(100%)', opacity: 0 },
        { transform: 'translateY(0)', opacity: 1 }
      ], {
        duration: 500
      })
      animation.onfinish = done
    },
    leave(el, done) {
      const animation = el.animate([
        { transform: 'translateY(0)', opacity: 1 },
        { transform: 'translateY(100%)', opacity: 0 }
      ], {
        duration: 500
      })
      animation.onfinish = done
    }
  }
}
</script>

使用第三方动画库(如 Animate.css)

结合 Animate.css 可以快速实现各种预定义动画效果。

<template>
  <div>
    <button @click="toggle">Toggle Slide</button>
    <transition
      enter-active-class="animate__animated animate__slideInUp"
      leave-active-class="animate__animated animate__slideOutDown"
    >
      <div v-if="isVisible" class="content">
        Content with Animate.css
      </div>
    </transition>
  </div>
</template>

<script>
import 'animate.css'
export default {
  data() {
    return {
      isVisible: false
    }
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible
    }
  }
}
</script>

使用 GSAP 实现高级动画

GSAP 提供了更强大的动画控制能力。

vue实现slideup效果例子

<template>
  <div>
    <button @click="toggle">Toggle Slide</button>
    <transition @enter="enter" @leave="leave" :css="false">
      <div v-if="isVisible" class="content">
        GSAP powered animation
      </div>
    </transition>
  </div>
</template>

<script>
import gsap from 'gsap'
export default {
  data() {
    return {
      isVisible: false
    }
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible
    },
    enter(el, done) {
      gsap.from(el, {
        y: '100%',
        opacity: 0,
        duration: 0.5,
        onComplete: done
      })
    },
    leave(el, done) {
      gsap.to(el, {
        y: '100%',
        opacity: 0,
        duration: 0.5,
        onComplete: done
      })
    }
  }
}
</script>

关键点说明

  • CSS Transition 方法最简单,适合基础需求
  • JavaScript 钩子提供更精细的控制
  • Animate.css 适合快速实现预定义动画
  • GSAP 适合复杂动画场景

每种方法都可以根据项目需求选择,简单的 UI 交互推荐使用 CSS Transition,复杂动画场景考虑 GSAP 等专业动画库。

标签: 例子效果
分享给朋友:

相关文章

vue实现点选效果

vue实现点选效果

实现点选效果的基本思路 在Vue中实现点选效果通常涉及监听用户的点击事件,并通过动态绑定类名或样式来改变元素的外观。核心是利用Vue的响应式数据和事件绑定机制。 使用v-bind和v-on实现 通过…

vue 实现过渡效果

vue 实现过渡效果

Vue 过渡效果实现方法 Vue 提供了 <transition> 和 <transition-group> 组件,用于在元素插入、更新或移除时应用动画效果。以下是具体实现方式…

vue实现卡片效果

vue实现卡片效果

Vue实现卡片效果的方法 使用Vue实现卡片效果可以通过多种方式完成,包括使用原生CSS、UI框架或自定义组件。以下是几种常见方法: 使用原生CSS和Vue组件 创建一个简单的卡片组件,结合CSS实…

vue实现删除效果

vue实现删除效果

Vue实现删除效果的方法 使用v-if或v-show控制显示 通过数据绑定和条件渲染指令,可以动态控制元素的显示与隐藏。v-if会完全移除DOM元素,v-show仅通过CSS控制显示。 <te…

vue实现导航栏效果

vue实现导航栏效果

Vue 实现导航栏效果的方法 基础导航栏结构 使用 Vue 的模板语法构建导航栏的基本 HTML 结构,通常包含 <nav> 和 <ul> 元素。通过 v-for 动态渲染导航…

vue 实现货架效果

vue 实现货架效果

实现货架效果的基本思路 货架效果通常指在网页中展示商品或物品的网格布局,可能包含拖拽排序、分类筛选、动画交互等功能。Vue.js 结合第三方库(如 vue-draggable 或 CSS Grid)可…