JS實(shí)現(xiàn)的雪花飄落特效示例
本文實(shí)例講述了JS實(shí)現(xiàn)的雪花飄落特效。分享給大家供大家參考,具體如下:
首先我們要?jiǎng)?chuàng)建一個(gè)HTML文件,將其命名為index.html
<!DOCTYPE html> <html> <head> <title> Canvas - 雪花特效 </title> <meta charset="utf-8"> <style> *{ margin:0px; padding:0px; } .myCanvas{ float:left; background:rgba(0,0,0,0); } </style> </head> <body> <canvas id="myCanvas" class="myCanvas"> </canvas> </body> </html>
在上面的代碼中,我們創(chuàng)建了一個(gè)canvas畫布,并且設(shè)置他為浮動(dòng),背景色無(wú)(如果這里不設(shè)置浮動(dòng),那么等下獲取整個(gè)屏幕的大小賦給他的時(shí)候是會(huì)產(chǎn)生邊距的)
接下來(lái)的JavaScript代碼
<script> //獲取屏幕最大長(zhǎng)寬 var maxWidth = document.documentElement.clientWidth; var maxHeight = document.documentElement.clientHeight; //獲取canvas畫布 var canvasObj = document.getElementById('myCanvas'); //將屏幕的長(zhǎng)寬賦給畫布 canvasObj.width = maxWidth; canvasObj.height = maxHeight; //創(chuàng)建雪花圖形(白色的圓形) var cxt = canvasObj.getContext('2d'); //設(shè)置雪花的個(gè)數(shù) var snowCount = 1000; var objArray = []; for(var index = 0;index < snowCount; index++){ objArray.push({ //隨機(jī)x軸位置 x : Math.random()*maxWidth, //隨機(jī)y軸位置 y : Math.random()*maxHeight, //隨機(jī)半徑大小 r : Math.random()*4+1, //畫圓 drow : function() { cxt.beginPath(); //填充色 cxt.fillstyle = "#fff"; //填充 cxt.fill(); //圓的屬性 cxt.arc(this.x,this.y,this.r,0,2*Math.PI); //輸出圓 cxt.stroke(); } }); } function drawSnow() { cxt.clearRect(0,0,maxWidth,maxHeight) //清除0x軸,0y軸,最大屏幕x軸,最大屏幕y軸的圓形 for(var index = 0; index<objArray.length; index++) { //把每個(gè)圓都畫出來(lái) objArray[index].drow(); } downLoadSnow() //調(diào)用雪花移動(dòng)效果 } function downLoadSnow() { for(var index = 0;index<objArray.length;index++){ if(objArray[index].x > maxWidth) { objArray[index].x = 0; //當(dāng)移動(dòng)的位置大于最大屏幕寬度時(shí)返回到0 } else { objArray[index].x +=5; //否則一直加下去 } if(objArray[index].y > maxHeight) { objArray[index].y = 0; //當(dāng)移動(dòng)的位置大于最大屏幕高度時(shí)返回0 } else { objArray[index].y +=5; //否則一直加下去 } } } setInterval("drawSnow()",30); //調(diào)用計(jì)時(shí)器 </script>
到此雪花落下的結(jié)果就已經(jīng)實(shí)現(xiàn)了
這里使用在線HTML/CSS/JavaScript前端代碼調(diào)試運(yùn)行工具:http://tools.jb51.net/code/WebCodeRun測(cè)試上述代碼,可得如下運(yùn)行效果:
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript運(yùn)動(dòng)效果與技巧匯總》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
Javascript load Page,load css,load js實(shí)現(xiàn)代碼
通過(guò)js動(dòng)態(tài)載入頁(yè)面和css或js的實(shí)現(xiàn)代碼,需要的朋友可以參考下。國(guó)外人寫的,可以參考下。2010-03-03Bootstrap文件上傳組件之bootstrap fileinput
這篇文章主要介紹了Bootstrap文件上傳組件之bootstrap fileinput,重點(diǎn)是把界面做得更加友好,更好的增加用戶體驗(yàn)。還有還多注意細(xì)節(jié)大家可以通過(guò)本文詳細(xì)了解下2016-11-11快速查找數(shù)組中的某個(gè)元素并返回下標(biāo)示例
最近在寫jquery的combobox插件時(shí)遇到效率問(wèn)題,再加上jquery選擇器的類帥選,導(dǎo)致效率很慢,采用以下方式二,可以輕松解決此問(wèn)題2013-09-09js屬性對(duì)象的hasOwnProperty方法的使用
這篇文章主要介紹了js屬性對(duì)象的hasOwnProperty方法的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02javascript正則表達(dá)配置擴(kuò)展名并實(shí)現(xiàn)驗(yàn)證
這篇文章主要介紹了javascript正則表達(dá)配置擴(kuò)展名并實(shí)現(xiàn)驗(yàn)證,文章圍繞主題展開相關(guān)資料,具有以得參考價(jià)值,需要的小伙伴可以參考一下2022-02-02uniapp改變底部安全區(qū)頂部手機(jī)信號(hào)時(shí)間電池欄顏色樣式
這篇文章主要為大家介紹了uniapp改變底部安全區(qū)頂部手機(jī)信號(hào)時(shí)間電池欄顏色樣式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03javascript中字體浮動(dòng)效果的簡(jiǎn)單實(shí)例演示
這篇文章主要介紹了javascript中字體浮動(dòng)效果的簡(jiǎn)單實(shí)例演示,在一些網(wǎng)站上經(jīng)常遇到當(dāng)鼠標(biāo)移導(dǎo)航欄的時(shí)候,能夠使其彈出下拉選項(xiàng),現(xiàn)在就演示一下這種功能,感興趣的小伙伴們可以參考一下2015-11-11