当前位置:首页 > VUE

vue实现扩散圆

2026-01-15 07:10:40VUE

Vue 实现扩散圆效果

扩散圆效果可以通过 CSS 动画结合 Vue 的动态样式绑定实现。以下是具体实现方法:

HTML 模板部分

<template>
  <div class="container">
    <div 
      v-for="(circle, index) in circles" 
      :key="index"
      class="ripple-circle"
      :style="{
        width: `${circle.size}px`,
        height: `${circle.size}px`,
        left: `${circle.x}px`,
        top: `${circle.y}px`,
        opacity: circle.opacity,
        animationDelay: `${index * 0.3}s`
      }"
    ></div>
    <button @click="addCircle">点击扩散</button>
  </div>
</template>

Vue 脚本部分

<script>
export default {
  data() {
    return {
      circles: []
    }
  },
  methods: {
    addCircle(event) {
      const newCircle = {
        x: event.clientX - 25,
        y: event.clientY - 25,
        size: 50,
        opacity: 1
      }
      this.circles.push(newCircle)

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

CSS 样式部分

<style scoped>
.container {
  position: relative;
  width: 100%;
  height: 100vh;
}

.ripple-circle {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(0, 150, 255, 0.6);
  transform: translate(-50%, -50%);
  animation: ripple 1s ease-out;
  animation-fill-mode: forwards;
}

@keyframes ripple {
  0% {
    transform: scale(0);
    opacity: 1;
  }
  100% {
    transform: scale(4);
    opacity: 0;
  }
}

button {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  padding: 10px 20px;
  background: #0096ff;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}
</style>

实现原理说明

通过 Vue 的 v-for 指令动态渲染多个圆形元素,每个圆形代表一次扩散效果。点击事件触发时,创建一个新的圆形数据对象并推入数组。

CSS 动画 ripple 控制圆形的缩放和透明度变化,animationDelay 实现多个圆形动画的错开效果。动画结束后通过 setTimeout 移除旧的圆形元素,防止内存泄漏。

优化方向

可以添加限制最大圆形数量的逻辑,防止同时存在过多元素影响性能。也可以调整动画参数如持续时间、缩放倍数等,获得不同的视觉效果。

vue实现扩散圆

methods: {
  addCircle(event) {
    if(this.circles.length >= 5) return

    // 其余代码不变
  }
}

通过调整 CSS 变量可以实现不同风格的扩散效果,如改变颜色、形状或动画曲线。

标签: vue
分享给朋友:

相关文章

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue 实现注册

vue 实现注册

Vue 实现注册功能 注册功能通常包括表单验证、数据提交和用户反馈。以下是实现注册功能的步骤: 1. 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,包含用户名、邮箱、密码等输入字段。…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…