本篇文章给大家介绍通过js+css3的transforms属性和keyframes属性来实现烟花绽放的动画效果的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

首先我们来看看效果:

动画的实现原理:

动画使用了两个关键帧(keyframes):

一个是烟花筒上升的轨迹,另一个是烟花绽放中的火星碎片。在这里你可以看到正在进行的基本草图:

每个烟花筒沿着场地底部的线分配一个随机的起始位置。它还在标记的区域内分配了一个随机目标。当烟花筒接近其目标点时,它会缩小为不可见(0x0像素)。

此时,耀斑变得可见。这些实际上是一系列以径向方式向外指向的DIV,在向外的尖端有一种颜色 - 就像火柴棍一样。为了模拟爆炸,他们只是增加了长度,使灯光向外移动。

JavaScript用于:

1、将所有必需的元素添加到页面(DOM);

2、为每个烟花筒创建和分配关键帧 ; 和

3、指定颜色并将每个光斑旋转到正确的位置。

代码示例:

html代码:

烟花绽放

css代码(css-fireworks.css)@-webkit-keyframes explosion {

from {

width: 0;

opacity: 0;

}

33% {

width: 0;

opacity: 0;

}

34% {

width: 10px;

opacity: 1.0;

}

40% {

width: 80px;

opacity: 1.0;

}

to {

width: 90px;

opacity: 0;

}

}

@-moz-keyframes explosion {

from {

width: 0;

opacity: 0;

}

33% {

width: 0;

opacity: 0;

}

34% {

width: 10px;

opacity: 1.0;

}

40% {

width: 80px;

opacity: 1.0;

}

to {

width: 90px;

opacity: 0;

}

}

#stage {

position: relative;

width: 600px;

height: 400px;

margin: 100px auto;

background: #000 url(img/outerspace.jpg);

}

.launcher {

position: absolute;

-webkit-animation-duration: 4s;

-webkit-animation-iteration-count: infinite;

-moz-animation-duration: 4s;

-moz-animation-iteration-count: infinite;

background: red;

border-bottom: 3px solid yellow;

}

.launcher div {

position: absolute;

opacity: 0;

-webkit-animation-name: explosion;

-webkit-animation-duration: 4s;

-webkit-animation-iteration-count: infinite;

-moz-animation-name: explosion;

-moz-animation-duration: 4s;

-moz-animation-iteration-count: infinite;

left: 3px;

top: 3px;

width: 10px;

height: 4px;

border-right: 4px solid yellow;

border-radius: 2px;

-webkit-transform-origin: 0 0;

-moz-transform-origin: 0 0;

}

js代码(css-fireworks.js)document.addEventListener("DOMContentLoaded", function() {

var num_launchers = 12;

var num_flares = 20;

var flare_colours = ['red', 'aqua', 'violet', 'yellow', 'lightgreen', 'white', 'blue'];

var cssIdx = document.styleSheets.length - 1;

function myRandom(from, to)

{

return from + Math.floor(Math.random() * (to-from));

}

var keyframes_template = "from { left: LEFTFROM%; top: 380px; width: 6px; height: 12px; }\n"

+ "33% { left: LEFTTOP%; top: TOPTOPpx; width: 0; height: 0; }\n"

+ " to { left: LEFTEND%; top: BOTBOTpx; width: 0; height: 0; }";

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

leftfrom = myRandom(15, 85);

lefttop = myRandom(30, 70);

toptop = myRandom(20, 200);

leftend = lefttop + (lefttop-leftfrom)/2;

botbot = toptop + 100;

csscode = keyframes_template;

csscode = csscode.replace(/LEFTFROM/, leftfrom);

csscode = csscode.replace(/LEFTTOP/, lefttop);

csscode = csscode.replace(/TOPTOP/, toptop);

csscode = csscode.replace(/LEFTEND/, leftend);

csscode = csscode.replace(/BOTBOT/, botbot);

try { // WebKit browsers

csscode2 = "@-webkit-keyframes flight_" + i + " {\n" + csscode + "\n}";

document.styleSheets[cssIdx].insertRule(csscode2, 0);

} catch(e) { }

try { // Mozilla browsers

csscode2 = "@-moz-keyframes flight_" + i + " {\n" + csscode + "\n}";

document.styleSheets[cssIdx].insertRule(csscode2, 0);

} catch(e) { }

}

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

var rand = myRandom(0, flare_colours.length - 1);

var rand_colour = flare_colours[rand];

var launch_delay = myRandom(0,100) / 10;

csscode = ".launcher:nth-child(" + num_launchers + "n+" + i + ") {\n"

+ " -webkit-animation-name: flight_" + i + ";\n"

+ " -webkit-animation-delay: " + launch_delay + "s;\n"

+ " -moz-animation-name: flight_" + i + ";\n"

+ " -moz-animation-delay: " + launch_delay + "s;\n"

+ "}";

document.styleSheets[cssIdx].insertRule(csscode, 0);

csscode = ".launcher:nth-child(" + num_launchers + "n+" + i + ") div {"

+ " border-color: " + rand_colour + ";\n"

+ " -webkit-animation-delay: " + launch_delay + "s;\n"

+ " -moz-animation-delay: " + launch_delay + "s;\n"

+ "}";

document.styleSheets[cssIdx].insertRule(csscode, 0);

}

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

csscode = ".launcher div:nth-child(" + num_flares + "n+" + i + ") {\n"

+ " -webkit-transform: rotate(" + (i * 360/num_flares) + "deg);\n"

+ " -moz-transform: rotate(" + (i * 360/num_flares) + "deg);\n"

+ "}";

document.styleSheets[cssIdx].insertRule(csscode, 0);

}

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

var newdiv = document.createElement("div");

newdiv.className = "launcher";

for(var j=0; j < num_flares; j++) {

newdiv.appendChild(document.createElement("div"));

}

document.getElementById("stage").appendChild(newdiv);

}

}, false);

总结:以上就是本篇文的全部内容,大家可以自己动手试试,加深理解。希望能对大家的学习有所帮助,推荐视频学习:css3教程!

html中制作烟花的效果代码,css3+js实现烟花绽放的动画效果(代码示例)相关推荐

  1. css烟花绽放效果代码,css3+js实现烟花绽放的动画效果(代码示例)

    本篇文章给大家介绍通过js+css3的transforms属性和keyframes属性来实现烟花绽放的动画效果的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来看看效 ...

  2. html摩天轮效果,用CSS3 animation模拟摩天轮旋转动画效果

    这次我们来实现一个简单又很有意思的动画效果,完全由CSS 的animation来实现,素材和源码来自于其他网站,个人对源码做了一些改动优化 完成后的效果--旋转效果 (github pages打开特别 ...

  3. css3 烟 蚊香_css3+js实现烟花绽放的动画效果(代码示例)

    本篇文章给大家介绍通过js+css3的transforms属性和keyframes属性来实现烟花绽放的动画效果的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来看看效 ...

  4. [译]CSS3实现柱状图的3D立体动画效果

    翻译自<Animated 3D Bar Chart with CSS3> 首先,我们看一看要实现的效果: 这篇文章所实现的动画效果起源于一个小小的想法,这个想法来自于另一个网站的一篇文章, ...

  5. css3 呼吸的莲花_CSS3实现莲花绽放的动画效果

    这篇文章我们来讲一下在网站建设中,CSS3实现莲花绽放的动画效果.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 先来看效果: 这效果看起来挺炫,但原理并不复杂,能实现一片花 ...

  6. 悬停渐变特效html,CSS3 transition属性实现hover渐变动画效果

    CSS3 transition属性实现hover渐变动画效果 我们知道许多网页动态特效都是由FLASH或JQUERY之类的JS特效库实现的实际上现在CSS3也能实现很多类似效果了,只是在各种浏览器中兼 ...

  7. 用css3实现摩天轮旋转的动画效果

    用css3实现摩天轮旋转的动画效果 1.CSS3 @keyframes 规则 如需在 CSS3 中创建动画,您需要学习 @keyframes 规则. @keyframes 规则用于创建动画.在 @ke ...

  8. 不到200行代码实现一个不断旋转的椭圆动画效果

    源代码: <html><head><script src="jQuery/jscex.jscexRequire.min.js" type=" ...

  9. php加入js动态效果,js怎么给输入框增加动画效果

    这次给大家带来js怎么给输入框增加动画效果,js给输入框增加动画效果的注意事项有哪些,下面就是实战案例,一起来看一下. (function() { function p() { window.requ ...

最新文章

  1. Centos8 安装并使用Ansible(一)
  2. 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
  3. 木棍分割[HAOI2008]
  4. 【项目实战】汽车金融评分卡
  5. mongodb--GridFS
  6. S/4HANA for Customer Management里的搜索分页处理 1
  7. Crontab定时任务访问url实例
  8. LINUX安装cuDNN
  9. phpstorm设置鼠标滚动缩放代码字体大小
  10. 【4】基于深度神经网络的脑电睡眠分期方法研究(训练模型)
  11. android 圆形自定义进度条,Android实现自定义圆形进度条
  12. EBT 道客巴巴的加密与破解 - 实用组合工具箱
  13. vue-draggle实现元素拖动,放大,缩小,多元素一起改变位置
  14. Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程
  15. python期货数据 库_如何用python或者基于vnpy框架将期货tick数据聚合成1分钟数据呢?...
  16. 从技术小白到收获BAT研发offer,分享我的学习经验和感悟(赠送相关学习资料)
  17. js怎么实现hmacsha256_各种语言HMAC SHA256实现
  18. 基于易语言,百度推广,飞鱼信息流,快手信息流等整合系统
  19. 什么是报表工具?和 EXCEL 有什么区别?
  20. js实现自定义打印区域

热门文章

  1. Python 使用tcp协议模拟 在线对话聊天(即时通讯)
  2. 阿里云服务器MySQL安装、登录以及密码的修改
  3. 微博提现验证码服务器繁忙,为什么我的新浪BLOG登录不了.而显示系统繁忙或者验证码错误.为? 爱问知识人...
  4. php html block,HTML的blockquote标签介绍
  5. 默默无闻七年 最终成就一个优秀的IT人
  6. 微星笔记本怎么快速重装Win10系统
  7. 巧妙运用Maxthon浏览器的高亮关键字功能 为你的BLOG添光彩
  8. 蒂法html5游戏,《蒂法h游戏》
  9. php 微信头像 圆形,微信头像生成圆形邀请卡
  10. Java体系化学习路线图,带走不谢!