动态颗粒背景,适合VUE、HTML前端显示

动态颗粒背景,适合做背景使用,VUE、HTML前端显示直接看效果
在这里插入图片描述
在这里插入图片描述

废话不多说直接上代码;

一、html 代码部分

<template><div id="login"><div class="container"><div class="login-form">登录表单部分</div><div class="lgBGimg"><div class="starBgc"><div class="star" v-for="(item,index) in starsCount" :key="index" ref="star"></div></div></div></div><div class="cavbg"><canvas id="spacebg"></canvas></div></div>
</template>

二、脚本部分

<script>
export default {setup() {return {starsCount:800,//数量distance:600,//间距};},mounted() {const starArr=this.$refs.starstarArr.forEach(item=>{let speed = 0.2+(Math.random()*1)let distance = this.distance+(Math.random()*300)item.style.transformOrigin=`0 0 ${distance}px`item.style.transform=`translate3d(0,0,-${distance}px) rotateY(${(Math.random()*360)}deg) rotateX(${(Math.random()*-50)}deg) scale(${speed},${speed})`});window.requestAnimFrame = (function(){return  window.requestAnimationFrame})();let canvas = document.getElementById("spacebg");let ct2d = canvas.getContext("2d");let numStars = 1800;let radius = '0.'+Math.floor(Math.random() * 9) + 1  ;let focalLength = canvas.width *2;let warp = 0;let centerX;let centerY;let stars = [];let star;let i;let animate = true;initializeStars();function executeFrame(){if(animate)requestAnimFrame(executeFrame);moveStars();drawStars();}function initializeStars(){centerX = canvas.width / 2;centerY = canvas.height / 2;stars = [];for(i = 0; i < numStars; i++){star = {x: Math.random() * canvas.width,y: Math.random() * canvas.height,z: Math.random() * canvas.width,o: '0.'+Math.floor(Math.random() * 99) + 1};stars.push(star);}}function moveStars(){for(i = 0; i < numStars; i++){star = stars[i];star.z--;if(star.z <= 0){star.z = canvas.width;}}}function drawStars(){var pixelX, pixelY, pixelRadius;if(canvas.width != window.innerWidth || canvas.width != window.innerWidth){canvas.width = window.innerWidth;canvas.height = window.innerHeight;initializeStars();}window.onresize = () => {if(canvas.width != window.innerWidth || canvas.width != window.innerWidth){canvas.width = window.innerWidth;canvas.height = window.innerHeight;initializeStars();}}if(warp==0){ct2d.fillStyle = "rgba(0,10,20,1)";// let lineGradient = ct2d.createLinearGradient (100, 10, 100, 60);//第一张图效果let lineGradient = ct2d.createLinearGradient (500, 50, 100, 600);//第二张图效果lineGradient.addColorStop(0, '#083c6f');lineGradient.addColorStop(1, '#010516');ct2d.fillStyle = lineGradient;ct2d.fillRect(0,0, canvas.width, canvas.height);}ct2d.fillStyle = "rgba(209, 255, 255, "+radius+")";for(i = 0; i < numStars; i++){star = stars[i];pixelX = (star.x - centerX) * (focalLength / star.z);pixelX += centerX;pixelY = (star.y - centerY) * (focalLength / star.z);pixelY += centerY;pixelRadius = 1 * (focalLength / star.z);ct2d.fillRect(pixelX, pixelY, pixelRadius, pixelRadius);ct2d.fillStyle = "rgba(209, 255, 255, "+star.o+")";}}executeFrame();}
};
</script>

三、样式部分代码

<style lang="less">
#login {width: 100%;height: 100%;position: relative;overflow: hidden;.container{width: 100%;height: 100%;position: relative;&:before{position: absolute;width:100%;height:100%;background:url(../../common/assets/image/background.svg);background-size: cover;opacity:0.08;display: block;content: '';z-index:2;}}.desc {width: 100% !important;text-align: center !important;color: gray !important;height: 60px !important;line-height: 60px !important;}.cavbg{position:absolute; left:0; top:0; z-index:0;}.lgBGimg{position: absolute;top:0px;left:0px;right:0px;bottom:0px;width:100%;height:100%;z-index:1;.starBgc{position: absolute;left:48%;bottom: -99px;transform: perspective(500px);transform-style: preserve-3d;perspective-origin: 50% 100%;animation: rotate 90s infinite linear;opacity:0.75;.star{width: 2px;height: 2px;background: #f7f7b8;position: absolute;top: 0;left: 0;backface-visibility: hidden;}@keyframes rotate {0%{transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);}100%{transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);}}}}
}
</style>

效果使用了3种,分别是GIF动效、CSS3动效、2DJS动效动态元素结合,开发而成的视频视频效果

搞完手工,最后给大家放上个视频看看效果吧,欢迎留言交了讨论一下吧

动态颗粒元素背景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中keep-alive的作用、原理及应用场景

在进行Vue开发的过程中&#xff0c;我们经常会遇到需要进行组件缓存的场景&#xff0c;这时候Vue提供的keep-alive组件就派上了用场。keep-alive组件是Vue内置的一个抽象组件&#xff0c;它可以将其包裹的组件进行缓存&#xff0c;提高组件的性能&#xff0c;同时也可以节省服务…

机器学习本科课程 实验6 聚类实验

第一题&#xff1a;使用sklearn的DBSCAN和AgglomerativeClustering完成聚类 实验内容&#xff1a; 使用sklearn的DBSCAN和AgglomerativeClustering在两个数据集上完成聚类任务对聚类结果可视化对比外部指标FMI和NMI 1. 导入模块 import numpy as np import matplotlib.pypl…

第二届 N1CTF Junior WEB方向 部分题解WP

zako 题目描述&#xff1a;很简单的rce哦 启动环境&#xff0c;源码直接给了。 execute.sh #!/bin/bashreject(){echo ${1}exit 1 }XXXCMD$1awk -v str"${XXXCMD}" \ BEGIN{deny";&$(){}[]!#$%^&*-";for(i 1; i < length(str); i){char su…

力扣:216. 组合总和 III

回溯解法思路&#xff1a; 1.先声明一个集合来接受全部组合等于n的组合&#xff0c;在声明一个单个组合的集合来接收遍历的全部的组合。 2.写一个回溯函数&#xff0c;里面有终止条件和遍历全部组合的for循环来进行遍历全部的组合&#xff0c;终止条件为li2的集合的长度等于k…

Open CASCADE学习|分割曲线

1、通过参数进行分割 分别获得曲线的 FirstParameter 和 LastParameter &#xff0c;然后对参数进行分割&#xff0c;获得n个ui&#xff0c;并对每个ui调用D0&#xff08;获得这个点的坐标值&#xff09;或D1&#xff08;获得这个点的坐标值和切向量&#xff09;。这个方法的优…

《图像处理》 图像细化

前言 图像细化算法又称之为Thinning Algorithms&#xff0c;或者骨架提取&#xff08;skeleton&#xff09;。该算法通常用于手写体数字的细化&#xff0c;输入的图像要求是黑白图像&#xff0c;即二值图像。从白色区域提取出该区域的中心线&#xff0c;中心线对于白色区域相当…

Transformer的PyTorch实现之若干问题探讨(一)

《Transformer的PyTorch实现》这篇博文以一个机器翻译任务非常优雅简介的阐述了Transformer结构。在阅读时存在一些小困惑&#xff0c;此处权当一个记录。 1.自定义数据中enc_input、dec_input及dec_output的区别 博文中给出了两对德语翻译成英语的例子&#xff1a; # S: de…

编译原理本科课程 专题5 基于 SLR(1)分析的语义分析及中间代码生成程序设计

一、程序功能描述 本程序由C/C编写&#xff0c;实现了赋值语句语法制导生成四元式&#xff0c;并完成了语法分析和语义分析过程。 以专题 1 词法分析程序的输出为语法分析的输入&#xff0c;完成以下描述赋值语句 SLR(1)文法的语义分析及中间代码四元式的过程&#xff0c;实现…

开源节点框架STNodeEditor使用

节点&#xff0c;一般都为树形Tree结构&#xff0c;如TreeNode&#xff0c;XmlNode。 树形结构有其关键属性Parent【父节点】&#xff0c;Children【子节点】 LinkedListNode为链表线性结构&#xff0c;有其关键属性Next【下一个】&#xff0c;Previous【上一个】&#xff0c…

1978-2022年人民币汇率(年平均价)数据

1978-2022年人民币汇率&#xff08;年平均价&#xff09;数据 1、时间&#xff1a;1978-2022年&#xff0c;其中人民币对欧元汇率时间为2002-2022年 2、指标&#xff1a;人民币对美元汇率(美元100)(元)、人民币对日元汇率(日元100)(元)、人民币对港元汇率(港元100)(元)、人民…

华为突然官宣:新版鸿蒙系统,正式发布

华为&#xff0c;一家始终引领科技创新潮流的全球性企业&#xff0c;近日再次引发行业震动——全新HarmonyOS NEXT&#xff0c;被誉为“纯血版鸿蒙”的操作系统正式官宣。这是华为在操作系统领域迈出的坚实且具有突破性的一步&#xff0c;标志着华为正逐步摆脱对安卓生态系统的…

3D力导向树插件-3d-force-graph学习002

一、实现效果&#xff1a;节点文字同时展示 节点显示不同颜色节点盒label文字并存节点上添加点击事件 二、利用插件&#xff1a;CSS2DRenderer 提示&#xff1a;以下引入文件均可在安装完3d-force-graph的安装包里找到 三、关键代码 提示&#xff1a;模拟数据可按如下格式填…

Node.js 包管理工具

一、概念介绍 1.1 包是什么 『包』英文单词是 package &#xff0c;代表了一组特定功能的源码集合 1.2 包管理工具 管理『包』的应用软件&#xff0c;可以对「包」进行 下载安装 &#xff0c; 更新 &#xff0c; 删除 &#xff0c; 上传 等操作。 借助包管理工具&#xff0…

深度学习本科课程 实验5 循环神经网络

循环神经网络实验 任务内容 理解序列数据处理方法&#xff0c;补全面向对象编程中的缺失代码&#xff0c;并使用torch自带数据工具将数据封装为dataloader分别采用手动方式以及调用接口方式实现RNN、LSTM和GRU&#xff0c;并在至少一种数据集上进行实验从训练时间、预测精度、…

android tv开发-1,leanback

目录 1.leanback库的一些事 2.leanback在使用时遇到的一些麻烦 视频卡片 页面空白 关于左侧菜单的一些设置 数据加载异常与加载中的一些操作 如果页面无数据,如何显示错误的页面.

视频美颜SDK开发指南:从入门到精通的技术实践

美颜SDK是一种强大的工具&#xff0c;它不仅仅可以让用户在实时视频中获得光滑的肌肤和自然的妆容&#xff0c;从简单的滤镜到复杂的人脸识别&#xff0c;美颜SDK涵盖了广泛的技术领域。 一、美颜SDK的基本原理 美颜SDK包括图像处理、人脸检测和识别、滤镜应用等方面。掌握这些…

2024日常训练

#一些简单的训练 第一题&#xff1a;带余除法 来源于dotcpp、 习题一 &#xff08;题目可以自己去看一看&#xff0c;这里就直接开始写题解了&#xff09; 题解&#xff1a; 1.需要用到map()函数来接受一行整数输入 2.需要用到---end 这里就可以实现输出结果在同一行 …

mysql 使用join进行多表关联查询

join类型 在一些报表统计或数据展示时候需要提取的数据分布在多个表中&#xff0c;这个时候需要进行join连表操作。join将两个或多个表当成不同的数据集合&#xff0c;然后进行集合取交集运算。比如有订单Order表记录用户id&#xff0c;如果像查询订单对应的用户信息&#xff…

uniapp中使用EelementPlus

uniapp的强大是非常震撼的&#xff0c;一套代码可以编写到十几个平台。这个可以在官网上进行查询uni-app官网。主要还是开发小型的软件系统&#xff0c;使用起来非常的方便、快捷、高效。 uniapp中有很多自带的UI&#xff0c;在创建项目的时候&#xff0c;就可以自由选择。而E…

网络编程面试系列-01

1. 应用层中常见的协议都有哪些? 应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。 应用层协议 1)DNS:一种用以将域名转换为IP地址的Internet服务,域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字…