当前位置:首页 > 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 中实现静态查询通常指不依赖后端接口,直接在前端处理数据筛选或搜索功能。以下是几种常见实现方式: 使用计算属性过滤数据 通过计算属性对静态数据进行筛选,适合简单查询场…

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm inst…

vue中如何实现循环

vue中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法…

vue的艾特功能实现

vue的艾特功能实现

Vue 的 @ 功能实现 在 Vue 中实现类似社交平台的 @ 功能,通常涉及输入框的监听、用户匹配和选择插入。以下是具体实现方法: 监听输入框内容 使用 v-model 绑定输入框内容,并通过 @…