做一个烟花,点击的时候绽放

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Document</title>

<script>
</script>
<style>
.container {
width: 80%;
height: 600px;
border: 2px solid red;
background: #000;
margin: 20px auto;
cursor: pointer;
position: relative;
left: 0;
top: 0;
overflow: hidden;
}

.fire {
width: 10px;
height: 10px;
position: absolute;
bottom: 0;
}
</style>
<script src="common.js"></script>
<script src="animate.js"></script>
<script>
window.onload = function() {

//每次点击 就在点击的位置 下方 创建 一个烟花对象
$(".container").onclick = function(event) {

var evt = event || window.event;

//console.log(evt.clientX);

var target = {
left: evt.clientX - this.offsetLeft,
top: evt.clientY - this.offsetTop
};

//创建烟花对象
new Fireworks(this, target);

}

}
//烟花构造函数
function Fireworks(obj, target) {

this.obj = obj;
//console.log(this);
//烟花运动的 目标值
this.target = target;

this.fire = document.createElement("div");

//初始化 创建烟花div设置类名和颜色,添加到contenter
this.init = function() {

this.fire.className = "fire";
this.fire.style.background = this.randomColor();
$(".container").appendChild(this.fire);
//控制div的坐标在 鼠标 的最下方,
this.fire.style.left = this.target.left + "px";

}

//烟花的移动方法
this.move = function() {

var _this = this;

animate(this.fire, { left: this.target.left, top: this.target.top }, function() {

//运动结束以后移除div
_this.obj.removeChild(_this.fire);
//调用爆炸方法,处理爆炸效果
_this.boom();

})

}

//爆炸效果
this.boom = function() {
console.log(‘爆炸‘)

//在目标位置擅长随机擅长20以内的div,并让他运动随机位置,擅长爆炸效果
for(let i = 0; i < Math.round(Math.random() * 10 + 10); i++) {

console.log(1);

var _this = this;

//在目标位置创建一个div
let fire = document.createElement("div");
fire.className = "fire";
fire.style.left = this.target.left + "px";
fire.style.top = this.target.top + "px";
fire.style.borderRadius = "50%";
this.obj.appendChild(fire);
fire.style.background = this.randomColor();

var target = {};
//在contenter内 产生随机坐标,让fire 运动该位置
target.left = Math.round(Math.random() * (this.obj.offsetWidth - 10));
target.top = Math.round(Math.random() * (this.obj.offsetHeight - 10));
animate(fire, target, function() {
//运动结束后移除
_this.obj.removeChild(fire);

});

}

}

this.randomColor = function() {

var r = Math.round(Math.random() * 255);
var g = Math.round(Math.random() * 255);
var b = Math.round(Math.random() * 255);

return "rgb(" + r + "," + g + "," + b + ")";

}

this.getStyle = function(obj, attr) {
//获取当前元素定位;

return {
left: getComputedStyle(obj)[attr],
top: getComputedStyle(obj)[attr]
}

}
//移动开始;
this.init();
this.move();

};

function $(select) {

return document.querySelector(select);
}
</script>
</head>

<body>

<div class="container">

</div>

</body>

</html>

原文地址:https://www.cnblogs.com/team-bali/p/11415329.html

时间: 2024-08-29 17:17:38

做一个烟花,点击的时候绽放的相关文章

用python做一个烟花show

烟花效果如图(截了几个时刻的静态图): 源代码如下: # -*- coding: utf-8 -*- # Nola import tkinter as tk from PIL import Image, ImageTk from time import time, sleep from random import choice, uniform, randint from math import sin, cos, radians # 模拟重力 GRAVITY = 0.05 # 颜色选项(随机或

做一个群组聊天页面

要做个群组聊天的页面,参考微信的web版本,大致就是分为左右两列,左边是群组列表,右边是群组中的对话 示例图如下: 这个页面风格是使用ACE做的,再次啧啧下,ACE真TMD强大,这个页面的风格很招人喜欢. 做这个页面刚开始的时候我走了弯路,初步想的是使用iframe,左侧群组聊天页面是页面加载的,右侧的群组对话框是个iframe.然后点击左侧的任意一个群组,右侧的对话iframe就修改src,然后更新对话的时候也超简单,直接iframe重新加载一下就ok了. 但是呢,后来发现,我这样需要写的co

.Net MVC&amp;&amp;datatables.js&amp;&amp;bootstrap做一个界面的CRUD有多简单

我们在项目开发中,做得最多的可能就是CRUD,那么我们如何在ASP.NET MVC中来做CRUD呢?如果说只是单纯实现功能,那自然是再简单不过了,可是我们要考虑如何来做得比较好维护比较好扩展,如何做得比较漂亮.做开发要有工匠精神,不要只求完成开发任务,那样的话,永远停留在只是简单的写业务逻辑代码水平,我们要做有追求的程序员.本来这么简单的东西,我真是懒得写,但是看到即便是一些工作了好些年的人,做东西也是只管实现功能,啥都不管,还有些界面css样式要么就硬编要么就毫无规则的在页面中进行穿插,遇到要

VUE2.0+VUE-Router做一个图片上传预览的组件

之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的这个是项目中用户反馈功能而来的,收获还是挺多的. 收获:dom操作=>数据操作       router的使用       组件的使用,具体总结放在尾部. 功能:1.上传图片 2.显示缩略图 3.可以删除 4.可以重新选择文件 先上成品图(主要抽取图片这块),自己在家主要做的功能,样式就不计较了.

做一个会PS切图的前端开发

系列链接 做一个会使用PS的前端开发 做一个会PS切图的前端开发 切图方法分类 PhotoShop从CS版本演变到现在的CC版本,切图功能发生了比较大的变化,我们可以把PhotoShop CS版本时的切图功能称为传统切图,而从PhotoShop CC版本开始PS提出了精准切图.所谓传统切图就是切图人员基本上都是自己分割图层切图,传统切图又分为全手工切图和参考线切图:现在CC版本提出的精准切图,切图人员可以依赖计算机把图层对象精确的切割出来,这样切割出来的图层肯定比传统切图切出来的精准度高.另一方

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器

从10月20号到现在,Unity3D也学了10天了,对于Unity3D也有了一个大致的了解,有必要做一个小游戏来检测一下自己的学习成果了.经过两天的努力,终于总算是做出来了一个可以玩的坦克大战了.首先讲讲我的设计目标: 1.地图编辑器 2.道具系统 3.简单AI系统 4.计分器 其中,最重要的就是地图编辑器了,其次到AI系统,其他几个都挺简单的. ---------------------------------------------------------------------------

做一个取悦自己的贵族,不是更好吗

取悦自己最近两周,有一件非常神奇的事情发生了.目前的工作,我是需要对A总监的,因为最近部门业务繁忙,我的工作定位就是所有我能做的事,我就需要去做,以便解放部门的其他人员,让他们有更多的精力去处理业务. 前期,我尽力和A总监对接,以便能在业务繁忙之时,至少是保证一切井然有序的,也许是对方也并没有十分清楚,或者是什么其他原因,总之就是对接不畅通了.每逢此时,一月前的我会自责,会觉得是自己不够好,是我不够努力,但此时的我依然会把自己能做的事做好,不再妄自菲薄,依然开心去解决一切我所能解决的问题.事情不

NetAnalyzer笔记 之 三. 用C++做一个抓包程序

[创建时间:2015-08-27 22:15:17] NetAnalyzer下载地址 经过前两篇的瞎扯,你是不是已经厌倦了呢,那么这篇让我们来点有意思的吧,什么,用C#.不,这篇我们先来C++的 Winpcap开发环境配置 完成了对Winpcap的介绍,什么,你没看到Winpcap的介绍,左转,百度(其实,真的是不想复制).我们就需要做一点有用的事情,比如写一个简单的数据采集工具.当然在此之前,我们需要配置Winpcap的开发环境. (1) 运行环境设置 Win32 平台下Winpcap应用程序