Vue3實(shí)現(xiàn)粒子動態(tài)背景的示例詳解
官網(wǎng): https://particles.js.org/
npm: https://www.npmjs.com/package/particles.vue3
安裝
pnpm add particles.vue3 pnpm add tsparticles-slim
注冊
main.js
import { createApp } from 'vue' import type { App } from 'vue' import globleApp from './App.vue' import router from './router' import Particles from "particles.vue3" const app: App = createApp(globleApp) app.use(router) .use(Particles) .mount('#app')
引入使用
完整代碼
<template> <div class="wft-particles-container" :style="particlesContainerStyle"> <vue-particles id="wft-tsparticles" :particlesInit="particlesInit" :options="particlesOpt" /> </div> </template> <script setup lang="ts"> import particlesOpt from './config/particles1' import { loadSlim } from "tsparticles-slim" import { computed } from 'vue' const props = withDefaults(defineProps<{ width?: string | number, height?: string | number, backgroundColor?: string, backgroundImage?: string }>(), { width: '100%', height: '100%', backgroundColor: '#002a3a', backgroundImage: '' }) const particlesContainerStyle = computed(() => { return { width: typeof props.width === 'string' ? props.width : props.width + 'px', height: typeof props.height === 'string' ? props.height : props.height + 'px', backgroundColor: props.backgroundColor, backgroundImage: `url(${props.backgroundImage})` } }) const particlesInit = async (engine: any) => { await loadSlim(engine); } </script> <style scoped> .wft-particles-container { display: flex; justify-content: center; align-items: center; position: relative; background-size: 100% 100%; background-repeat: no-repeat; } #wft-tsparticles { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 0; } </style>
其中的options配置:
可以在同級新建config文件夾,新建particles1.ts, particles2.ts,里面定義配置項(xiàng)數(shù)據(jù)并向外導(dǎo)出
①
export default { // background: { // color: { // value: '#002a3a' // } // }, fpsLimit: 60, interactivity: { detectsOn: 'canvas', events: { onClick: { // 開啟鼠標(biāo)點(diǎn)擊的效果 enable: true, mode: 'push' }, onHover: { // 開啟鼠標(biāo)懸浮的效果(線條跟著鼠標(biāo)移動) enable: true, mode: 'grab' }, resize: true }, modes: { // 配置動畫效果 bubble: { distance: 400, duration: 2, opacity: 0.8, size: 40 }, push: { quantity: 4 }, grab: { distance: 200, duration: 0.4 }, attract: { // 鼠標(biāo)懸浮時,集中于一點(diǎn),鼠標(biāo)移開時釋放產(chǎn)生漣漪效果 distance: 200, duration: 0.4, factor: 5 } } }, particles: { color: { value: '#6AECFF' // 粒子點(diǎn)的顏色 }, links: { color: '#6AECFF', // 線條顏色 distance: 150, enable: true, opacity: 0.5, // 不透明度 width: 2 // 線條寬度 }, collisions: { enable: true }, move: { attract: { enable: false, rotateX: 600, rotateY: 1200 }, bounce: false, direction: 'none', enable: true, out_mode: 'out', random: false, speed: 1, // 移動速度 straight: false }, number: { density: { enable: true, value_area: 800 }, value: 80 }, opacity: { value: 0.5 }, shape: { type: 'circle' }, size: { random: true, value: 5 } }, detectRetina: true }
②
export default { // background: { // color: { // value: '#0d47a1' // } // }, fpsLimit: 120, interactivity: { events: { onClick: { enable: true, mode: 'push' }, onHover: { enable: true, mode: 'repulse' }, resize: true }, modes: { bubble: { distance: 400, duration: 2, opacity: 0.8, size: 40 }, push: { quantity: 4 }, repulse: { distance: 200, duration: 0.4 } } }, particles: { color: { value: '#ffffff' }, links: { color: '#ffffff', distance: 150, enable: true, opacity: 0.5, width: 1 }, collisions: { enable: true }, move: { direction: 'none', enable: true, outModes: { default: 'bounce' }, random: false, speed: 6, straight: false }, number: { density: { enable: true, area: 800 }, value: 80 }, opacity: { value: 0.5 }, shape: { type: 'circle' }, size: { value: { min: 1, max: 5 }, } }, detectRetina: true }
效果
到此這篇關(guān)于Vue3實(shí)現(xiàn)粒子動態(tài)背景的示例詳解的文章就介紹到這了,更多相關(guān)Vue3粒子動態(tài)背景內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Monaco?Editor開發(fā)SQL代碼提示編輯器實(shí)例詳解
這篇文章主要為大家介紹了Monaco?Editor開發(fā)SQL編輯器實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08vue實(shí)現(xiàn)前端展示后端實(shí)時日志帶顏色示例詳解
這篇文章主要為大家介紹了vue實(shí)現(xiàn)前端展示后端實(shí)時日志帶顏色示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11vue elementUI 表單校驗(yàn)的實(shí)現(xiàn)代碼(多層嵌套)
這篇文章主要介紹了vue elementUI 表單校驗(yàn)的實(shí)現(xiàn)代碼(多層嵌套),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11vue文件上傳Required request part ‘file‘ is&n
這篇文章主要介紹了vue文件上傳Required request part ‘file‘ is not present問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用
這篇文章主要介紹了vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Vue移動端實(shí)現(xiàn)圖片上傳及超過1M壓縮上傳
這篇文章主要為大家詳細(xì)介紹了Vue移動端實(shí)現(xiàn)圖片上傳及超過1M壓縮上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12Vue3對比Vue2的優(yōu)點(diǎn)總結(jié)
vue3解決了vue2的一些缺陷與弊端,學(xué)習(xí)新的技術(shù)是很有必要的,本文總結(jié)了一些vue3的優(yōu)點(diǎn),希望各位能盡快轉(zhuǎn)入vue3的使用中2021-06-06