原生JavaScript实现点击鼠标生成烟花爆炸动画

作者:交互手记时间:2026-10-29 07:30:30浏览:112

本文介绍如何使用原生JavaScript实现简易的烟花爆炸效果。通过监听鼠标点击事件,动态创建DOM元素模拟烟花升空与爆炸过程。利用定时器控制动画帧,结合随机数生成粒子颜色和运动轨迹,实现视觉上的爆炸扩散效果。代码包含完整的HTML结构与JavaScript逻辑,适合前端初学者学习DOM操作与基础动画原理。

原生JavaScript实现点击鼠标生成烟花爆炸动画

本文通过一个具体实例,详细解析了如何使用原生JavaScript代码实现一个简单的烟花爆炸动画效果。该示例旨在为读者提供学习参考,帮助理解相关技术原理。

核心实现思路是在页面指定的坐标范围内,动态生成多个div元素。通过控制这些元素的位置和样式变化,模拟出烟花绽放时的视觉效果。

具体实现代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>js烟花效果</title>
<script type="text/javascript">
document.onclick=function (ev)
{
var oEvent=ev||event;
var aDiv=[];
var oDiv=null;
var _oDiv=document.createElement('div');
var i=0;
var x=oEvent.clientX;
var y=oEvent.clientY;
_oDiv.style.position='absolute';
_oDiv.style.background='red';
_oDiv.style.width='3px';
_oDiv.style.height='30px';
_oDiv.style.left=oEvent.clientX+'px';
_oDiv.style.top=document.documentElement.clientHeight+'px';
document.body.appendChild(_oDiv);
var t=setInterval(function (){
if(_oDiv.offsetTop<=y)
        {
clearInterval(t);
show();
document.body.removeChild(_oDiv);
        }
_oDiv.style.top=_oDiv.offsetTop-30+'px';
}, 30);
function show()
    {
var oDiv=null;
for(i=0;i<100;i++)
        {
oDiv=document.createElement('div');
oDiv.style.width='3px';
oDiv.style.height='3px';
oDiv.style.background='#'+Math.ceil(Math.random()*0xEFFFFF+0x0FFFFF).toString(16);
oDiv.style.position='absolute';
oDiv.style.left=x+'px';
oDiv.style.top=y+'px';
var a=Math.random()*360;
//oDiv.speedX=Math.random()*40-20;
//oDiv.speedY=Math.random()*40-20;
oDiv.speedX=Math.sin(a*180/Math.PI)*20*Math.random();
oDiv.speedY=Math.cos(a*180/Math.PI)*20*Math.random();
document.body.appendChild(oDiv);
aDiv.push(oDiv);
        }
    }
setInterval(doMove, 30);
function doMove()
    {
for(i=0;i<aDiv.length;i++)
        {
aDiv[i].style.left=aDiv[i].offsetLeft+aDiv[i].speedX+'px';
aDiv[i].style.top=aDiv[i].offsetTop+aDiv[i].speedY+'px';
aDiv[i].speedY+=1;
if(aDiv[i].offsetLeft<0 || aDiv[i].offsetLeft>document.documentElement.clientWidth || aDiv[i].offsetTop<0 || aDiv[i].offsetTop>document.documentElement.clientHeight)
            {
document.body.removeChild(aDiv[i]);
aDiv.splice(i, 1);
            }
        }
    }
};
</script>
</head>
<body style="overflow:hidden; background:black;">
</body>
</html>

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

作者最新文章