当前位置:首页 > VUE

vue实现扩散圆圈

2026-02-19 12:53:50VUE

Vue 实现扩散圆圈效果

扩散圆圈效果可以通过 CSS 动画结合 Vue 的动态样式绑定实现。以下是一个完整的实现方案:

基本实现思路

  1. 使用 Vue 的 v-for 动态生成多个圆圈元素
  2. 通过 CSS 动画控制圆圈的缩放和透明度变化
  3. 利用 Vue 的数据绑定控制动画参数

具体实现代码

<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`,
        animationDelay: `${index * 0.3}s`
      }"
    ></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      circles: [],
      maxCircles: 5,
      currentIndex: 0
    }
  },
  methods: {
    addCircle(event) {
      if (this.circles.length >= this.maxCircles) {
        this.circles.shift()
      }

      this.circles.push({
        x: event.clientX - 25,
        y: event.clientY - 25,
        size: 50,
        active: true
      })
    }
  },
  mounted() {
    window.addEventListener('click', this.addCircle)
  },
  beforeDestroy() {
    window.removeEventListener('click', this.addCircle)
  }
}
</script>

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

.ripple-circle {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(66, 165, 245, 0.6);
  transform: scale(0);
  animation: ripple 1.5s ease-out;
  pointer-events: none;
}

@keyframes ripple {
  to {
    transform: scale(3);
    opacity: 0;
  }
}
</style>

实现说明

  1. 创建 Vue 组件并设置初始数据,包括存储圆圈的数组、最大圆圈数量和当前索引
  2. 在模板中使用 v-for 循环渲染圆圈元素,通过动态样式绑定位置和大小
  3. 添加点击事件监听器,在点击位置生成新的圆圈
  4. 使用 CSS 关键帧动画实现扩散效果,圆圈从初始大小逐渐放大并淡出
  5. 限制同时显示的圆圈数量,避免性能问题

自定义选项

可以通过修改以下参数来自定义效果:

  • 修改 maxCircles 控制同时显示的圆圈数量
  • 调整 CSS 中的 animation-duration 改变动画速度
  • 更改 background-color 调整圆圈颜色
  • 修改 ripple 动画中的 scale 值控制最终扩散大小

优化版本(自动连续动画)

如果需要自动连续播放的扩散效果,可以使用以下修改:

vue实现扩散圆圈

// 在 mounted 中添加定时器
mounted() {
  this.interval = setInterval(() => {
    this.circles.push({
      x: Math.random() * window.innerWidth,
      y: Math.random() * window.innerHeight,
      size: 30 + Math.random() * 70,
      active: true
    })

    if (this.circles.length > this.maxCircles) {
      this.circles.shift()
    }
  }, 800)
},
beforeDestroy() {
  clearInterval(this.interval)
}

注意事项

  1. 确保容器有明确的尺寸(如示例中的 height: 100vh
  2. 动画性能优化:圆圈数量不宜过多,建议控制在10个以内
  3. 移动端适配可能需要添加 touch 事件监听

标签: 圆圈vue
分享给朋友:

相关文章

vue中登陆实现逻辑

vue中登陆实现逻辑

Vue 中登录实现逻辑 前端实现逻辑 表单验证 使用 Vue 的表单验证库(如 VeeValidate)或自定义验证规则,确保用户输入的账号和密码符合要求。例如,检查邮箱格式、密码长度等。 发送登录…

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要依赖…

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。例…

vue实现画图

vue实现画图

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

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…