JS实现超炫网页烟花动画效果的方法


Posted in Javascript onMarch 02, 2015

本文实例讲述了JS实现超炫网页烟花动画效果的方法。分享给大家供大家参考。具体分析如下:

非常炫的使用JS实现的一个网页烟花燃放动画效果,能适应JS做出这样的动画来

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>超炫网页烟花效果</title>

</head>

<style type="text/css">

.fire{display:block; overflow:hidden; font-size:12px; position:absolute};

body{overflow:hidden; background:#000}

html{overflow:hidden; background:#000}

</style>

<body>

</body>

<script type="text/javascript">

var Fire = function(r, color) {

this.radius = r || 12;

this.color = color;

this.xpos = 0;

this.ypos = 0;

this.zpos = 0;

this.vx = 0;

this.vy = 0;

this.vz = 0;

this.mass = 1;

this.x =0;

this.y=0;

this.p = document.createElement("span");

this.p.className = "fire";

this.p.innerHTML = "*";

this.p.style.fontSize = this.radius + "px";

this.p.style.color = "#" + this.color;

}

Fire.prototype = {

append: function(parent) {

parent.appendChild(this.p);

},

setSize: function(scale) {

this.p.style.fontSize = this.radius * scale + "px";

},

setPosition:function(x, y) {

this.p.style.left = x + "px";

this.p.style.top =  y + "px";

},

setVisible: function(b) {

this.p.style.display = b ? "block" : "none";

}

}

var fireworks = function() {

var fires = new Array();

var count = 150;

var fl = 250;

var vpx = 500;

var vpy = 300;

var gravity = .5;

var floor = 200;

var bounce = -.8;

var timer;

var wind = ((Math.floor(Math.random()*3) + 3)/10)*(Math.random()*2 - 1 > 0 ? 1 : -1)*.25;

var wpos = 0;

var wcount;

return {

init: function() {

wcount = 50 + Math.floor(Math.random() * 100);

for (var i=0; i<count; i++) {

var color = 0xFF0000;

color = (Math.random() * 0xFFFFFF).toString(16).toString().split(".")[0];

while(color.length < 6) {

color = "0" + color;

}

var fire = new Fire(12, color);

fires.push(fire);

fire.ypos = -100;

fire.vz = Math.random() * 6 - 3;

fire.vx = (Math.random()*2 - 1)*2 ;

fire.vy = Math.random()*-15 - 15;

fire.x = 500

fire.y = 600;

fire.append(document.body);

}

var that = this;

timer = setInterval(function() {

wpos++;

if (wpos >= wcount) {

wpos = 0;

wcount = 50 + Math.floor(Math.random() * 100);

wind = ((Math.floor(Math.random()*3) + 3)/10)*(Math.random()*2 - 1 > 0 ? 1 : -1)*.25;

}

for (var i=0;i<count; i++) {

that.move(fires[i]);

}

}, 30);

},

move: function(fire) {

fire.vy += gravity;

fire.x += fire.vx;

fire.y += fire.vy;

fire.vx += wind;

fire.setPosition(fire.x, fire.y);

if (fire.x < 0 || fire.x >1000 || fire.y  < 0 || fire.y  > 600) {

fire.vx = (Math.random()*2 - 1)*2;

fire.vy = Math.random()*-15 - 15;

fire.x = 500;

fire.y = 600;

fire.setPosition(fire.x, fire.y);

}

}

}

}

fireworks().init();

</script>

</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
再说AutoComplete自动补全之实现原理
Nov 05 Javascript
jQuery焦点图切换特效插件封装实例
Aug 18 Javascript
javascript实现检验的各种规则
Jul 31 Javascript
五种js判断是否为整数类型方式
Dec 03 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
Vue多种方法实现表头和首列固定的示例代码
Feb 02 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
vue 中固定导航栏的实例代码
Nov 01 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
Mar 26 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 #Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 #Javascript
JavaScript日期类型的一些用法介绍
Mar 02 #Javascript
了解Javascript的模块化开发
Mar 02 #Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 #Javascript
js实现图片漂浮效果的方法
Mar 02 #Javascript
ECMAScript 5中的属性描述符详解
Mar 02 #Javascript
You might like
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
javascript定时器完整实例
2015/02/10 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
Django框架安装方法图文详解
2019/11/04 Python
python文件操作的简单方法总结
2019/11/07 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python regex库实例用法总结
2021/01/03 Python
C#中的验证控件有几种
2014/03/08 面试题
纠风工作实施方案
2014/03/15 职场文书
大学生赌博检讨书
2014/09/22 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS