1. 程式人生 > 實用技巧 >js簡單實現煙花效果

js簡單實現煙花效果

用js寫的一個簡單的煙花效果。

需要用到自己封裝的move運動函式,在別的隨筆裡有封裝好的,直接呼叫就行。

效果圖:

js程式碼:

<script type="text/javascript">
function Fire(){
    // 建立一個夜空
    this.night = document.createElement("div");
    this.setStyle(this.night,{
        width:"1000px",
        height:"500px",
        "background-color":"#000",
        border:
"red solid 10px", position:"relative" }) // 將這個夜空放到body中顯示 document.body.appendChild(this.night) // 給夜空繫結單擊事件 this.night.onclick = e=>{ var e = e || window.event; var x = e.offsetX; var y = e.offsetY; this.createOneFire(x,y) } } // 建立一個小火花 Fire.prototype.createOneFire = function(x,y){
// 建立一個小火花 var div = document.createElement("div"); this.setStyle(div,{ width:"10px", height:"10px", backgroundColor:this.getColor(), position:"absolute", left:x + "px", bottom:0 }); // 將這個小火花放到夜空中 this.night.appendChild(div) // 讓這個小火花開始運動 - 上升到指定的位置
move(div,{top:y},()=>{ // 將上來的這個小火花幹掉 div.parentElement.removeChild(div); // 建立很多小火花 this.createMayFire(x,y) }) } Fire.prototype.createMayFire = function(x,y){ // 獲取一個隨機數 var num = this.getRandom(100,150); // 定義一個數組 // 通過迴圈建立多個小火花 for(let i=0;i<num;i++){ let div = document.createElement("div"); // 將建立好的div放在預置的陣列中 div.setAttribute("aaa",i) this.setStyle(div,{ width:"10px", height:"10px", backgroundColor:this.getColor(), position:"absolute", left:x + "px", top:y + "px", borderRadius:"50%" }); this.night.appendChild(div) // 獲取隨機left var l = this.getRandom(0,this.night.clientWidth-10); // 獲取隨機top var t = this.getRandom(0,this.night.clientHeight-10); move(div,{left:l,top:t},()=>{ // 刪除很多個小火花 div.parentElement.removeChild(div) }) } } // 獲取隨機顏色的方法 Fire.prototype.getColor = function(){ return `rgb(${this.getRandom(0,256)},${this.getRandom(0,256)},${this.getRandom(0,256)})` } // 獲取隨機數的方法 Fire.prototype.getRandom = function(a,b){ return Math.floor(Math.random()*(a-b))+b; } // 設定樣式的方法 Fire.prototype.setStyle = function(ele,styleObj){ for(var attr in styleObj){ ele["style"][attr] = styleObj[attr]; } } var f = new Fire() </script>