Skip to content

五彩纸屑

简介

网友的需求越来越花哨了,直接使用 @catdad/canvas-confetti

五彩纸屑效果,可以用于节日、庆祝等场合,增加网页的趣味性和氛围感。以下是一个简单的五彩纸屑效果实现:

安装插件

提示

  • 推荐使用 pnpm 安装,我在子项目的,所以需要切换到子项目的 Demo\docs-base 目录下安装
sh
cd Demo\docs-base
pnpm add -D canvas-confetti
sh
yarn add -D canvas-confetti
sh
npm i -D canvas-confetti
sh
bun add -D canvas-confetti

创建组件

在其 官网 上,有最简单的纸屑配置

但是建议还是 vue 封装一下,在 Demo\docs-base\.vitepress\theme\components 文件夹中创建 Confetti.vue

md
docs-base
├─ .vitepress
│  └─ config.mts
│  └─ theme
│  │   ├─ components
│  │   │   └─ Confetti.vue
│  │   └─ index.ts
└─ index.md

配置组件

  • Confetti.vue 填入如下代码,保存
vue
<script setup lang="ts">
import confetti from "canvas-confetti";
import { inBrowser } from "vitepress";

if (inBrowser) {
  /* 纸屑代码这里配置 */
  confetti({
    particleCount: 100,
    spread: 170,
    origin: { y: 0.6 },
  });
}
</script>

警告

npm 打包报错,请使用如下方式

点击查看
vue
<script setup lang="ts">
import { onMounted } from "vue";
import confetti from "canvas-confetti";

onMounted(() =>
  /* 纸屑 */
  confetti({
    particleCount: 100,
    spread: 170,
    origin: { y: 0.6 },
  })
);
</script>

注册组件

Demo\docs-base\.vitepress\theme\index.ts 中注册全局组件

ts
/* Demo\docs-base\.vitepress\theme\index.ts */
import DefaultTheme from 'vitepress/theme'
import confetti from "./components/confetti.vue"

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    // 注册组件
    app.component("MNavLinks", MNavLinks),  //导航组件
    app.component('confetti' , confetti)  //五彩纸屑
  },
  Layout: defineComponent({
    // ...其他配置
  }),
}

使用组件

  • Demo\docs-base\index.md 中使用
md
<!-- index.md -->

<!-- 五彩纸屑组件 -->
<confetti />

效果

最后回到首页或者其他页面,插入组件看效果,同理也可以做 雪花效果

最近更新