当前位置:首页 > VUE

vue实现图标跳动

2026-03-29 17:44:58VUE

使用 CSS 动画实现图标跳动

在 Vue 中实现图标跳动效果可以通过 CSS 动画完成。以下是一个基于 transition@keyframes 的实现方法。

安装依赖(如使用第三方图标库)

npm install @fortawesome/vue-fontawesome @fortawesome/free-solid-svg-icons

组件代码示例

vue实现图标跳动

<template>
  <div class="jumping-icon" @click="jump">
    <font-awesome-icon :icon="['fas', 'heart']" :class="{ 'animate': isJumping }" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      isJumping: false
    }
  },
  methods: {
    jump() {
      this.isJumping = true
      setTimeout(() => {
        this.isJumping = false
      }, 1000)
    }
  }
}
</script>

<style>
.jumping-icon {
  font-size: 2rem;
  cursor: pointer;
}

.animate {
  animation: jump 0.5s ease;
}

@keyframes jump {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-20px);
  }
}
</style>

使用 GreenSock (GSAP) 实现高级动画

如需更复杂的跳动效果,可通过 GSAP 实现弹性动画。

安装 GSAP

vue实现图标跳动

npm install gsap

组件代码示例

<template>
  <div ref="icon" class="jumping-icon">
    <font-awesome-icon :icon="['fas', 'star']" />
  </div>
</template>

<script>
import { gsap } from 'gsap'

export default {
  mounted() {
    this.$refs.icon.addEventListener('click', this.animateIcon)
  },
  methods: {
    animateIcon() {
      gsap.to(this.$refs.icon, {
        y: -30,
        duration: 0.3,
        ease: "bounce.out",
        yoyo: true,
        repeat: 1
      })
    }
  }
}
</script>

使用 Vue 过渡组件实现

通过 Vue 的 <transition> 组件结合 CSS 实现入场跳动效果。

<template>
  <transition
    @before-enter="beforeEnter"
    @enter="enter"
    @leave="leave"
  >
    <font-awesome-icon v-if="showIcon" :icon="['fas', 'bell']" />
  </transition>
</template>

<script>
export default {
  data() {
    return {
      showIcon: true
    }
  },
  methods: {
    beforeEnter(el) {
      el.style.transform = 'translateY(0)'
    },
    enter(el, done) {
      const timeline = gsap.timeline({
        onComplete: done
      })
      timeline.to(el, {
        y: -20,
        duration: 0.2
      }).to(el, {
        y: 0,
        duration: 0.3,
        ease: "elastic.out(1, 0.5)"
      })
    }
  }
}
</script>

注意事项

  1. 图标库需自行替换为项目实际使用的库(如 Element UI 图标、Ionicons 等)
  2. CSS 动画性能优于 JavaScript 动画,简单效果建议优先使用 CSS
  3. 移动端开发需考虑动画的流畅性和兼容性
  4. 可通过调整 translateY 值和动画时间参数控制跳动幅度和速度

标签: 图标vue
分享给朋友:

相关文章

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…