fireworks-js
54 строки · 1.1 Кб
1<template>
2<div class="buttons">
3<button @click="mounted = !mounted">
4{{ mounted ? 'Mounted' : 'Unmounted' }}
5</button>
6<button @click="startFireworks">Start</button>
7</div>
8<Fireworks
9ref="fw"
10v-if="mounted"
11:autostart="false"
12:options="options"
13:style="{
14top: 0,
15left: 0,
16width: '100%',
17height: '100%',
18position: 'fixed',
19background: '#000'
20}"
21/>
22</template>
23
24<script lang="ts" setup>
25import { Fireworks } from '@fireworks-js/vue'
26import { ref, watch } from 'vue'
27import type { FireworksOptions } from '@fireworks-js/vue'
28
29const fw = ref<InstanceType<typeof Fireworks>>()
30const options = ref<FireworksOptions>({ opacity: 0.5 })
31const mounted = ref(true)
32
33async function startFireworks() {
34if (!fw.value) return
35fw.value.start()
36await new Promise((resolve) => setTimeout(resolve, 1000))
37await fw.value.waitStop()
38}
39
40watch(fw, () => startFireworks())
41</script>
42
43<style>
44body {
45background-color: #000;
46}
47
48.buttons {
49z-index: 1;
50position: absolute;
51display: flex;
52gap: 4px;
53}
54</style>
55