当前位置:首页 > 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 脚本部分

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 指令动态渲染多个圆形元素,每个圆形代表一次扩散效果。点击事件触发时,创建一个新的圆形数据对象并推入数组。

vue实现扩散圆

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

优化方向

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

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

    // 其余代码不变
  }
}

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

标签: vue
分享给朋友:

相关文章

vue实现下拉菜单

vue实现下拉菜单

实现下拉菜单的基本思路 使用Vue实现下拉菜单可以通过动态绑定v-show或v-if控制菜单显示隐藏,结合事件监听(如@click或@mouseenter)触发状态切换。以下是两种常见实现方式: 方…

vue实现tab标签

vue实现tab标签

Vue 实现 Tab 标签的方法 使用动态组件和 v-for 渲染标签 通过 v-for 循环生成标签页标题,结合 v-bind:class 动态切换激活状态。使用 v-show 或动态组件 <…

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <t…

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mind…

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…