JS原生 之------放烟花喽

2024-08-23 13:32
文章标签 js ------ 原生 烟花

本文主要是介绍JS原生 之------放烟花喽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>放烟花——欣欣博客</title><style>html,body{overflow:hidden;}body,div,p{margin:0;padding:0;}body{background:#000;font:12px/1.5 arial;color:#7A7A7A;}.fire {width: 3px;height: 30px;background: white;position: absolute;} .spark {position: absolute;width: 6px;height: 6px;}</style><script src="move.js"></script><script>οnlοad=function(){document.οnclick=function(e){e =e||event;var coord ={x:e.clientX,y:e.clientY};new Fire(coord).init().launch();}function Fire(coord){var self = this;//初始化this.init=function(){this.ball = document.createElement("div");this.ball.className="fire";this.ball.style.left = coord.x+"px";this.ball.style.top= window.innerHeight +"px";document.body.appendChild(this.ball);return this;}//发射this.launch=function(){animate(this.ball,{left:coord.x,top:coord.y,height:3},{callback:function(){self.explode();}});					return this;}//爆炸this.explode=function(){this.destory();var count = randomInt(30,50);for(var i =0;i<count;i++){new Spark(coord).init().parabola();}}//销毁this.destory = function(){this.ball.remove();}}function Spark(coord){var self = this;this.init=function(){this.box = document.createElement("div");this.box.className="spark";this.box.style.backgroundColor="#"+randomColor();console.log(this.box.style.backgroundColor)this.box.style.left = coord.x+"px";this.box.style.top = coord.y+"px";this.box.speedX = randomInt(-20,20);this.box.speedY = randomInt(-20,10);document.body.appendChild(this.box);return this;}this.parabola=function(){this.timer =setInterval(function(){if(self.box.offsetTop >window.innerHeight){clearInterval(self.timer);self.destroy();return;}self.box.style.left = self.box.offsetLeft + self.box.speedX +"px";self.box.style.top = self.box.offsetTop +self.box.speedY++ +"px";},30)}this.destory=function(){this.box.remove();}}//随机整数function randomInt(min,max){return Math.round(Math.random()*(max-min)+min);}//随机颜色function randomColor(){var R = Math.round( Math.random()*255 ).toString(16);var G = Math.round( Math.random()*255 ).toString(16);var B = Math.round( Math.random()*255 ).toString(16);return (R.length<2?"0"+R:R) + (G.length<2?"0"+G:G)+ (B.length<2?"0"+B:B);}}</script></head><body></body>
</html>
move.js
<pre name="code" class="javascript">/*** * @param {Object} obj 目标对象* @param {Object} json 要改变的属性* @param {Object} extend {buffer,callback} 当buffer为true时为弹性运动*  callback会在运动结束时,被执行* animate(obj, {top:500, left: 300}, {callback:function(){}, buffer: true})*/
function animate(obj, json, extend){extend = extend || {};if(obj.isMoving){return;} else {stop();obj.isMoving = true;}//obj = Object.assgin(obj,extend);obj.buffer = extend.buffer;obj.callback = extend.callback;obj.timerlist = {};//为每一个属性添加一个定时器for(var attr in json){(function(attr){obj.timerlist[attr] = {speed:0};obj.timerlist[attr].timer = setInterval(function(){//首先得到当前值var iNow = 0;if(attr == "opacity"){iNow = getStyle(obj, attr) * 100; } else {iNow = getStyle(obj, attr);}var speed = obj.timerlist[attr].speed;//根据目标值,计算需要的速度if(obj.buffer==true){speed += (json[attr] - iNow)/5;speed *= 0.75;} else {speed = (json[attr] - iNow)/5;}//当无限接近目标值时,停止定时器if(Math.abs(iNow - json[attr]) < 0.5){clearInterval(obj.timerlist[attr].timer);delete obj.timerlist[attr];if(getObjLength(obj.timerlist)==0){//所有定时器已停止stop();obj.callback ? obj.callback() : "";}} else {//根据速度,修改当前值if(attr == "opacity"){obj.style.opacity = (iNow+speed)/100;obj.style.filter = 'alpha(opacity=' + parseFloat(iNow+speed) + ')';			} else {obj.style[attr] = iNow+speed+"px";}obj.timerlist[attr].speed = speed;}}, 30);})(attr);}function clearTimer(){for(var i in obj.timerlist){clearInterval(obj.timerlist[i]);}}function getStyle(obj, attr){if(obj.currentStyle){return isNaN(parseFloat(obj.currentStyle[attr])) ? obj.style[attr]=0 : parseFloat(obj.currentStyle[attr]);} else {return isNaN(parseFloat(getComputedStyle(obj, null)[attr])) ? obj.style[attr]=0 : parseFloat(getComputedStyle(obj, null)[attr]);}}function getObjLength(obj){var n = 0;for(var i in obj){n++;}return n;}function stop(){clearTimer();//清除所有定时器obj.isMoving = false;}
}


 

                                    

这篇关于JS原生 之------放烟花喽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099517

相关文章

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/