当前位置:首页 > 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实现文档分享

vue实现文档分享

Vue 实现文档分享功能 文档分享功能通常涉及文件上传、存储、生成分享链接以及权限控制等模块。以下是基于 Vue 的实现方案: 文件上传组件 使用 element-ui 或 ant-design-v…

vue实现用户信息删除

vue实现用户信息删除

Vue 实现用户信息删除功能 在 Vue 中实现用户信息删除功能通常涉及前端界面交互和后端 API 调用。以下是实现步骤: 前端界面设计 创建删除按钮或操作项,通常使用 @click 事件触发删除操…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-ra…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <i…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以通…