当前位置:首页 > VUE

vue实现图标闪烁

2026-01-17 11:30:35VUE

使用 CSS 动画实现图标闪烁

在 Vue 中实现图标闪烁可以通过 CSS 动画或 JavaScript 定时器控制。以下是基于 CSS 动画的方法,性能更好且易于维护。

定义闪烁动画样式
在组件的 <style> 部分或全局 CSS 中定义一个闪烁动画:

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}
.blink-icon {
  animation: blink 1.5s infinite;
}

在 Vue 组件中应用动画
将动画类绑定到图标元素上,例如使用 Font Awesome 或 SVG 图标:

<template>
  <div>
    <!-- Font Awesome 图标示例 -->
    <i class="fas fa-star blink-icon"></i>

    <!-- SVG 图标示例 -->
    <svg class="blink-icon" viewBox="0 0 24 24">
      <path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z"/>
    </svg>
  </div>
</template>

通过动态类名控制闪烁

如果需要通过逻辑控制闪烁(如点击触发),可以使用 Vue 的动态类名绑定:

<template>
  <div>
    <i 
      class="fas fa-bell" 
      :class="{ 'blink-icon': isBlinking }"
      @click="toggleBlink"
    ></i>
  </div>
</template>

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

使用 JavaScript 定时器(备选方案)

如果需更复杂的控制(如非均匀闪烁),可通过 setInterval 动态修改样式:

<template>
  <div>
    <i ref="icon" class="fas fa-heart"></i>
  </div>
</template>

<script>
export default {
  mounted() {
    this.startBlink();
  },
  beforeDestroy() {
    clearInterval(this.blinkTimer);
  },
  methods: {
    startBlink() {
      this.blinkTimer = setInterval(() => {
        this.$refs.icon.style.opacity = 
          this.$refs.icon.style.opacity === '0.3' ? '1' : '0.3';
      }, 500);
    }
  }
};
</script>

注意事项

  • 性能优化:CSS 动画比 JavaScript 定时器更高效,优先推荐。
  • 浏览器兼容性@keyframesanimation 支持所有现代浏览器。
  • 自定义参数:调整 animation-durationkeyframes 中的百分比可改变闪烁频率和效果。

vue实现图标闪烁

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

相关文章

vue实现多选div

vue实现多选div

实现多选 DIV 的基本思路 在 Vue 中实现多选 DIV 功能,可以通过以下方法实现。主要思路是利用 v-model 绑定选中状态,结合 CSS 类名动态切换样式。 数据准备与模板结构 定义一…

vue实现选区创建

vue实现选区创建

Vue 实现选区创建的方法 在 Vue 中实现选区创建通常涉及 DOM 操作和事件处理。以下是几种常见的方法: 使用原生 DOM API 通过 window.getSelection() 和 Ra…

vue表格实现教学

vue表格实现教学

Vue 表格实现方法 使用原生HTML表格 在Vue模板中直接使用HTML的<table>标签,结合v-for动态渲染数据: <template> <table&…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDia…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…