当前位置:首页 > VUE

vue实现扩散圆

2026-03-08 09:51:44VUE

Vue 实现扩散圆效果

在 Vue 中实现扩散圆效果可以通过 CSS 动画和 Vue 的动态样式绑定结合完成。以下是两种常见实现方式:

纯 CSS 动画实现

通过 @keyframes 定义缩放动画,应用于圆形元素:

<template>
  <div class="circle-container">
    <div class="pulse-circle"></div>
  </div>
</template>

<style>
.circle-container {
  position: relative;
  width: 100px;
  height: 100px;
}

.pulse-circle {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: rgba(0, 150, 255, 0.6);
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0% {
    transform: scale(0.8);
    opacity: 0.8;
  }
  70% {
    transform: scale(1.3);
    opacity: 0.3;
  }
  100% {
    transform: scale(1.4);
    opacity: 0;
  }
}
</style>

Vue 动态渲染多圆扩散

通过 Vue 的 v-for 动态生成多个同心圆,实现更复杂的波纹效果:

<template>
  <div class="ripple-container" @click="addRipple">
    <div 
      v-for="(ripple, index) in ripples" 
      :key="index"
      class="ripple-circle"
      :style="{
        width: ripple.size + 'px',
        height: ripple.size + 'px',
        left: ripple.x + 'px',
        top: ripple.y + 'px',
        opacity: ripple.opacity
      }"
    ></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      ripples: []
    }
  },
  methods: {
    addRipple(e) {
      const rect = e.target.getBoundingClientRect();
      const x = e.clientX - rect.left;
      const y = e.clientY - rect.top;

      this.ripples.push({
        x: x - 25,
        y: y - 25,
        size: 50,
        opacity: 1
      });

      setTimeout(() => {
        this.ripples.shift();
      }, 1000);
    }
  }
}
</script>

<style>
.ripple-container {
  position: relative;
  width: 300px;
  height: 200px;
  background: #f0f0f0;
  overflow: hidden;
}

.ripple-circle {
  position: absolute;
  border-radius: 50%;
  background: rgba(0, 150, 255, 0.6);
  transform: translate(-50%, -50%);
  animation: ripple-effect 1s linear;
}

@keyframes ripple-effect {
  to {
    transform: translate(-50%, -50%) scale(3);
    opacity: 0;
  }
}
</style>

使用第三方库

对于更复杂的效果,可以考虑使用专门动画库:

  1. 安装动画库:

    npm install animejs
  2. Vue 组件实现:

    
    <template>
    <div ref="circle" class="animated-circle"></div>
    </template>
import anime from 'animejs';

export default { mounted() { anime({ targets: this.$refs.circle, scale: [1, 3], opacity: [0.8, 0], duration: 1500, easing: 'easeOutQuad', loop: true }); } }

vue实现扩散圆

.animated-circle { width: 50px; height: 50px; border-radius: 50%; background-color: #4CAF50; } ```

以上方法可根据具体需求选择,CSS 动画适合简单效果,Vue 动态渲染适合交互式效果,第三方库则提供更丰富的动画控制能力。

标签: vue
分享给朋友:

相关文章

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…