0


HTML5生日快乐在线网页祝福 (一场浪漫的烟花秀) HTML+CSS+JavaScript

❤ 精彩专栏推荐👇🏻👇🏻👇🏻
💂 作者主页: 【进入主页—🚀获取更多源码】
🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】
🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (125套) 】
七夕来袭!是时候展现专属于程序员的浪漫了!你打算怎么给心爱的人表达爱意?鲜花礼物?代码表白?还是创意DIY?或者…无论那种形式,快来秀我们一脸吧!


📂文章目录


二、📚网站介绍

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;

📙网页编辑方面:可使用任意HTML编辑软件(如:

Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++

等任意html编辑软件进行运行及修改编辑等操作)。
其中:
(1)📜html文件包含:其中index.html是首页、其他html为二级页面;
(2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等
(3)📄 js文件包含:页面炫酷效果实现


三、🔗网站效果

▶️1.视频演示

14-html5 canvas生日快乐文字烟花背景动画特效

🧩 2.图片演示

在这里插入图片描述


四、💒 网站代码

🧱HTML结构代码

<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>烟火</title><scriptsrc="js/jquery.min.js"></script><scriptsrc="js/canvas.js"></script><scriptsrc="js/deepCopy.js"></script><scriptsrc="js/Firework.js"></script></head><body><canvasid="canvas"width="500"height="500"></canvas><script>var canvas =$$("canvas"),
    ctx = canvas.getContext("2d"),
    g =0.25,//模拟重力加速度
    n =5,//一次性发射的烟火的数量
    fireworkList =[],//存放所有烟火对象//烟火形状                                                        圆形                                                              椭圆形                                                          爱心形
    fireworkTypeList =[createCircleFirework, createEllipseFirework, createHeartFirework],
    totalNum =0,//发射烟火的总数量
    surprise_num =25,//当发射烟火数量达到25时,发射生日快乐字样的烟火
    flag =true;//是否发射生日快乐字样的烟火
canvas.width =$(window).width()-15;
canvas.height =$(window).height()-20;varinit=function(firework,params){//初始化一个烟火var beforeBalst = firework.getBeforeBalst();
    firework.setCtx(ctx);
    firework.setStatus(1);//状态为点燃引线
    firework.setNum(100+ Math.floor(20* Math.random()));//爆炸之后的烟花数量
    firework.setRoundness(getType(params)=="object"?(getType(params.roundness)=="number"? params.roundness :0.25):0.25);//默认的规则度是0.25,这样爆炸的烟花与真实的最像//firework.setFireworkType(getType(params) == "object" ? params.fireworkType : fireworkTypeList[Math.floor(Math.random() * fireworkTypeList.length)]);//从三种形状中随机烟花形状
    firework.setFireworkType(getType(params)=="object"? params.fireworkType : createCircleFirework);//默认圆形烟花
    firework.setDelay(Math.floor(30* Math.random()));//引线燃烧的时间,单位为帧, 最多30帧,即0.5s
    beforeBalst.setAnimate({quiescence:{//发射位置为底部中间x: canvas.width /2,y: canvas.height,deg:0,zoom:1},move:{//发射速度向量vx:-7+14* Math.random(),vy:-22+4* Math.random(),pal:0,scale:0},translate:{//发射加速度,有一个为g的重力加速度ax:0,ay: g,apal:0,scale:0}});
    beforeBalst.setR(3);//烟火半径为3像素
    beforeBalst.setColor("#FFFFFF");//白色
    beforeBalst.setLife(50+ Math.floor(Math.random()*50));//烟花从发射到爆炸的时间,单位为帧,即50-100帧后爆炸
    beforeBalst.setBase();//记录烟花发射的初始状态}for(var i =0; i < n; i++){//初始化n个烟火var firework = Firework.getInstance();init(firework);
    fireworkList.push(firework);
    totalNum++;}vardraw=function(){//描绘每一帧烟火的状态//整个canvas充满黑幕,模拟黑夜
    ctx.globalCompositeOperation ='source-over';
    ctx.globalAlpha =0.2;
    ctx.fillStyle ='#000003';
    ctx.fillRect(0,0, canvas.width, canvas.height);//描绘每个烟火的状态
    ctx.globalCompositeOperation ='screen';
    $.each(fireworkList,function(index,value){
        value.draw();});};varupdate=function(){//更新每一帧烟火的状态for(var i = fireworkList.length -1; i >=0; i--){
        fireworkList[i].update();//更新if(fireworkList[i].getStatus()==5){//烟火消失
            fireworkList.splice(i,1);//在烟火集合中将这个烟火去除掉if(totalNum < surprise_num){//当发射烟火数量没到25var firework = Firework.getInstance();//继续生成新的烟火init(firework);
                fireworkList.push(firework);
                totalNum++;}if(fireworkList.length ==0&& flag){//发射生日快乐烟火和一箭穿心烟火var firework = Firework.getInstance();init(firework,{fireworkType:createCustomFirework,roundness:1});
                fireworkList.push(firework);var firework2 = Firework.getInstance();init(firework2,{fireworkType:createDoubleHeartFirework,roundness:1});
                fireworkList.push(firework2);
                flag =false;}}}}varloop=function(){draw();update();requestAnimationFrame(function(){//每秒触发60次的方法,因此动画是60帧的loop();});};loop();</script></body></html>

🏠JS代码

/**
 * 获取变量类型
 */function getType(obj){
    var toString = Object.prototype.toString;var map ={'[object Boolean]':'boolean','[object Number]':'number','[object String]':'string','[object Function]':'function','[object Array]':'array','[object Date]':'date','[object RegExp]':'regExp','[object Undefined]':'undefined','[object Null]':'null','[object Object]':'object'};
   if(obj instanceof Element){
        return 'element';}
   return map[toString.call(obj)];}/**
 * 利用递归实现深拷贝
 */function deepCopy(data){
    var type = getType(data);
    var obj;if(type === 'array'){
        obj = [];}else if(type === 'object'){obj ={};}else{
        //不再具有下一层次
        return data;}if(type === 'array'){for(var i = 0, len = data.length; i < len;i++){
            obj.push(deepCopy(data[i]));}}else if(type === 'object'){for(var key in data){
            obj[key] = deepCopy(data[key]);}}
    return obj;}

五、🎁更多源码

1.如果我的博客对你有帮助

请 “👍点赞” “✍️评论” “💙收藏” 

一键三连哦!

  1. 💗【👇🏻👇🏻👇🏻🉑关注我| 获取更多源码】 
    
    带您学习各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、大学生毕业HTML模板 、等!

📣以上内容技术相关问题💌欢迎一起交流学习👇🏻👇🏻👇🏻

标签: html javascript css

本文转载自: https://blog.csdn.net/p305114466/article/details/126994929
版权归原作者 @蜡笔小新星 所有, 如有侵权,请联系我们删除。

“HTML5生日快乐在线网页祝福 (一场浪漫的烟花秀) HTML+CSS+JavaScript”的评论:

还没有评论