Skip to content

FxConfetti 彩纸效果

全局点击彩纸特效,支持金色星星、彩色纸片和自定义 Emoji 三种模式。

效果描述

用户在页面任意位置点击时,会在点击位置释放彩纸粒子。

金色星星模式(默认)

  • 金色星星 (⭐ 形状)
  • 金色圆形纸屑

彩色纸片模式

  • 彩色方形纸屑(红、绿、蓝、黄、橙)

自定义 Emoji 模式

  • 使用 canvas-confettishapeFromText API 将 Emoji 渲染为粒子形状
  • 支持单个或多个 Emoji

配置方式

启用/禁用

ts
themeConfig: {
  confetti: true,   // 启用(默认)
  confetti: false,  // 禁用
}

选择预设形状

ts
themeConfig: {
  // 金色星星(默认)
  confetti: true,

  // 彩色纸片
  confetti: { shape: "colored-paper" },
}

自定义 Emoji

ts
themeConfig: {
  // 单个 Emoji
  confetti: { shapes: "🌸" },

  // 多个 Emoji
  confetti: { shapes: ["🌸", "🎀", "🦄"] },
}

二次散射粒子

默认每次点击会同时释放主粒子和二次散射粒子,可通过 secondary 关闭:

ts
themeConfig: {
  // 关闭二次散射粒子
  confetti: { shape: "colored-paper", secondary: false },
}

提示

当同时配置 shapeshapes 时,shapes(自定义 Emoji)优先。

技术细节

  • 基于 canvas-confetti 库实现
  • 自定义 Emoji 使用 confetti.shapeFromText() API 渲染
  • 组件无视觉模板(空 <template>),仅注册全局 click 事件监听器
  • 使用 defineClientComponent 懒加载,不影响 SSR
  • 与 VitePress 的 View Transition 切换动画兼容

在MIT许可下发布    备案号: 晋ICP备2024051569号-1