Canvas 讓你的屏幕下一場 Hacker 流星雨吧

IE這種上古神器居然還有人在用??今天來分享一個很狂拽酷炫吊炸天的特效,其裝逼效果不亞于上面那張入侵五角大樓導彈制導系統(tǒng)的概念圖(手動滑稽),實現(xiàn)起來很簡單,跟著動手一起來吧

正如標題所提到的,我們使用到了canvas元素,你可以理解為是一張畫布,有了畫布之后,我們就要在畫布上進行繪制,而canvas元素本身是不具備繪圖能力的,所以我們要借助 JavaScript 來完成繪制工作

HTML 的結(jié)構(gòu)我們只需要一個標簽就夠了,若是在低版本的瀏覽器中,我們還是要提醒一下瀏覽器需要升級了

<canvas id="canvas">?

IE這種上古神器居然還有人在用?

</canvas>

設置全局 CSS 樣式,很簡單,代碼如下:

*{margin:0px;padding:0px;}

body{overflow:hidden;}

獲取瀏覽器屏幕并設置其寬高,設置一個包含 256 個空元素的數(shù)組,.join("1")用 1 來把數(shù)組里的元素拼接為字符串,.split("")過濾掉數(shù)組里的空元素

const canvas = document.getElementById("canvas"),

ctx? ? = canvas.getContext("2d"),

s? ? ? = window.screen,

w? ? ? = canvas.width = s.width,

h? ? ? = canvas.height = s.height;

let? words? = Array(256).join("1").split("");

隨后繪制矩形,設置填充的顏色及文本

setInterval( () => {

ctx.fillStyle = "rgba(0, 0, 0, 0.05)";

ctx.fillRect(0, 0, w, h);

ctx.fillStyle = "#20af0e";

//數(shù)組元素的映射

words.map( (y,n) => {

//生成A-Z a-z之間的值

text = String.fromCharCode(Math.ceil(65 + Math.random() * 57))

x = n * 10;

ctx.fillText(text, x, y);

words[n] = (y > 758 + Math.random() * 484 )? 0 : y + 10;

});

},50);

運行結(jié)果

運行結(jié)果

這里我們還可以將填充繪圖的顏色修改成隨機顏色,而顏色值是十六進制數(shù),其范圍是 000000 - FFFFFF,轉(zhuǎn)換為十進制是 0 - 16777215,所以我們通過隨機數(shù)生成在這個范圍內(nèi)的色值,當然最后還是要轉(zhuǎn)成十六進制,不要忘記在色值前面加#號 ,一共有三種方法,代碼如下所示:

// 方法一

function color1(){

let color = "";

const colors = [0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f"];

for(let i = 0; i < 6; i++){

const n = Math.ceil(Math.random() * 15);

color += "" + colors[n];

if(i == 5){

return "#" + color;

}

}

}

// 方法二

function color2(){

let color = Math.ceil(Math.random() * 16777215).toString(16);

while(color.length < 6) {

color = "0" + color;

}

return "#" + color;

}

// 方法三

function color3(){

return "#" + ( color => {

return new Array(7 - color.length).join("0") + color;

})((Math.random() * 0x1000000 << 0).toString(16))

}

運行結(jié)果

本篇的內(nèi)容到這里就全部結(jié)束了,源碼我已經(jīng)發(fā)到了 GitHubHacker meteor shower上了,有需要的同學可自行下載

End of File

行文過程中出現(xiàn)錯誤或不妥之處在所難免,希望大家能夠給予指正,以免誤導更多人,最后,如果你覺得我的文章寫的還不錯,希望能夠點一下喜歡關(guān)注,為了我能早日成為簡書簽約作者獻上一發(fā)助攻吧,謝謝!^ ^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:canvas簡介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標簽 ②:HTML5 ...
    GreenHand1閱讀 4,882評論 2 32
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,923評論 0 33
  • 辭去工作已經(jīng)快四個月了,這期間,去幫一個學校招生度過了一個半月。剩下的時間就是睡覺,看電影,玩游戲,和朋...
    亦艱亦堅亦簡閱讀 396評論 13 20
  • 題目描述輸入n個整數(shù),找出其中最小的K個數(shù)。例如輸入4,5,1,6,2,7,3,8這8個數(shù)字,則最小的4個數(shù)字是1...
    哦漏昵稱已被占用閱讀 256評論 0 0
  • 很久以來,在大我七歲的老公面前我都是個索愛的孩子。那時候我們的互動就是我提需求,他負責滿足??墒强傆胁话?,覺得這不...
    自在鳳兒閱讀 227評論 0 1

友情鏈接更多精彩內(nèi)容