JS實(shí)現(xiàn)網(wǎng)頁煙花動(dòng)畫效果
原生js實(shí)現(xiàn)放煙花效果,點(diǎn)擊鼠標(biāo),然后向四周擴(kuò)散,最后自由落體效果!最簡單的方法實(shí)現(xiàn)!
效果圖:

CSS代碼:
*{
padding: 0px;
margin: 0px;
background: #000;
}
.firworks{
width: 6px;
height: 6px;
position: absolute;
}
js代碼:
<script type="text/javascript">
//封裝一個(gè)顏色隨機(jī)的效果
function randomColor(){
var color = "rgb("
var r = parseInt(Math.random()*256);
var g = parseInt(Math.random()*256);
var b = parseInt(Math.random()*256);
color = color+r+","+g+","+b+")";
return color;
}
//創(chuàng)建一個(gè)制造煙花的構(gòu)造函數(shù),第一個(gè)參數(shù)為元素,第二參數(shù)為初始x軸位置,第三參數(shù)為y軸位置。
function Fireworks(Div,x,y){
Div.style.backgroundColor=randomColor(); //給煙花添加背景色
Div.className="firworks"; //添加一個(gè)class
document.body.appendChild(Div);
Div.style.left=x+"px"; //把鼠標(biāo)點(diǎn)擊坐標(biāo)給div
Div.style.top=y+"px";
var speedX = (parseInt(Math.random()*2) == 0 ? 1 : -1)*parseInt(Math.random()*16 + 1); //三目運(yùn)算符隨機(jī)移動(dòng)方向,概率50%,為1時(shí)往正方向移動(dòng),負(fù)1時(shí)往反方向移動(dòng)第二個(gè)隨機(jī)數(shù)隨機(jī)速度快慢
var speedY = (parseInt(Math.random()*2) == 0 ? 1 : -1)*parseInt(Math.random()*20 + 1);
this.move=function(){
var i = 3;
var time1=setInterval(function(){
i++;
Div.style.left=Div.offsetLeft+speedX+"px";
Div.style.top=Div.offsetTop+speedY+i+"px"; //當(dāng)i+speedY>0時(shí),煙花朝下運(yùn)動(dòng)。
if(Div.offsetLeft+Div.offsetWidth>window.innerWidth|| Div.offsetLeft<2 || Div.offsetTop+Div.offsetHeight>window.innerHeight || Div.offsetTop<2 ){
Div.remove(); //移動(dòng)出可視區(qū)域記得刪除div和清除定時(shí)器
clearInterval(time1);
}
},30);
}
}
document.οnclick=function (e){
var evt=e||window.event; //兼容性處理
for(var i=0;i<80;i++){ //隨機(jī)煙花的數(shù)量
var div=document.createElement("div");
var b=new Fireworks(div,evt.pageX,evt.pageY);
b.move();
}
}
</script>
更多JavaScript精彩特效分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript處理DOM元素事件實(shí)現(xiàn)代碼
DOM元素都有一些標(biāo)準(zhǔn)事件,一般使用時(shí)只要使用onclick=function的方式就可以了,但是當(dāng)需要為DOM元素添加多個(gè)事件,刪除事件,或在用Javascript封裝控件的時(shí)候,為封裝的控件添加自定義事件的時(shí)候2012-05-05
微信小程序 自定義彈窗實(shí)現(xiàn)過程(附代碼)
這篇文章主要介紹了微信小程序 自定義彈窗實(shí)現(xiàn)過程(附代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Webpack實(shí)現(xiàn)多頁面打包的方法步驟
本文主要介紹了Webpack實(shí)現(xiàn)多頁面打包的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形
這篇文章主要介紹了JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
在table中插入多行的js代碼(與insertAdjacentHTML相似的功能)
在table中插入多行,能使用與insertAdjacentHTML相似的功能2010-06-06
JS實(shí)現(xiàn)的網(wǎng)頁上的顏色拾色器
這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)頁上的顏色拾色器,需要的朋友可以參考下2016-04-04
js中async函數(shù)結(jié)合promise的小案例淺析
這篇文章主要介紹了js中async函數(shù)結(jié)合promise的小案例淺析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
基于bootstrap插件實(shí)現(xiàn)autocomplete自動(dòng)完成表單
這篇文章主要介紹了基于bootstrap插件實(shí)現(xiàn)autocomplete自動(dòng)完成表單的相關(guān)資料,感興趣的朋友可以參考一下2016-05-05

