溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

一招實(shí)現(xiàn)“代碼雨”的方法

發(fā)布時(shí)間:2021-04-09 11:44:02 來源:億速云 閱讀:306 作者:啵贊 欄目:web開發(fā)

這篇文章主要介紹“一招實(shí)現(xiàn)“代碼雨”的方法”,在日常操作中,相信很多人在一招實(shí)現(xiàn)“代碼雨”的方法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”一招實(shí)現(xiàn)“代碼雨”的方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

一招實(shí)現(xiàn)“代碼雨”的方法

先看看效果

1、綠色:

一招實(shí)現(xiàn)“代碼雨”的方法

2、彩色:

一招實(shí)現(xiàn)“代碼雨”的方法

3、背景色:

一招實(shí)現(xiàn)“代碼雨”的方法

4、綠色逐漸變淺:

一招實(shí)現(xiàn)“代碼雨”的方法

源代碼:

<!DOCTYPE html>
<html>
   
<head>   
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Code -by ZhenYu.Sha</title>
    <style type="text/css">
        html, body {
            width: 100%;
            height: 100%;
        }
        body {
            background: #000;
            overflow: hidden;
            margin: 0;
            padding: 0;
        }
    </style>
</head>
   
<body>  
<canvas id="cvs"></canvas>
<script type="text/javascript">
    var cvs = document.getElementById("cvs");
    var ctx = cvs.getContext("2d");
    var cw = cvs.width = document.body.clientWidth;
    var ch = cvs.height = document.body.clientHeight;
    //動(dòng)畫繪制對(duì)象
    var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
    var codeRainArr = []; //代碼雨數(shù)組
    var cols = parseInt(cw / 14); //代碼雨列數(shù)
    var step = 16;    //步長(zhǎng),每一列內(nèi)部數(shù)字之間的上下間隔
    ctx.font = "bold 26px microsoft yahei"; //聲明字體,個(gè)人喜歡微軟雅黑

    function createColorCv() {
        //畫布基本顏色
        ctx.fillStyle = "#242424";
        ctx.fillRect(0, 0, cw, ch);
    }

    //創(chuàng)建代碼雨
    function createCodeRain() {
        for (var n = 0; n < cols; n++) {
            var col = [];
            //基礎(chǔ)位置,為了列與列之間產(chǎn)生錯(cuò)位
            var basePos = parseInt(Math.random() * 300);
            //隨機(jī)速度 3~13之間
            var speed = parseInt(Math.random() * 10) + 3;
            //每組的x軸位置隨機(jī)產(chǎn)生
            var colx = parseInt(Math.random() * cw)

            //綠色隨機(jī)
            var rgbr = 0;
            var rgbg = parseInt(Math.random() * 255);
            var rgbb = 0;
            //ctx.fillStyle = "rgb("+r+','+g+','+b+")"

            for (var i = 0; i < parseInt(ch / step) / 2; i++) {
                var code = {
                    x: colx,
                    y: -(step * i) - basePos,
                    speed: speed,
                    //  text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1  //隨機(jī)生成0或者1
                    text: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "s", "t", "u", "v", "w", "x", "y", "z"][parseInt(Math.random() * 11)], //隨機(jī)生成字母數(shù)組中的一個(gè)
                    color: "rgb(" + rgbr + ',' + rgbg + ',' + rgbb + ")"
                }
                col.push(code);
            }
            codeRainArr.push(col);
        }
    }

    //代碼雨下起來
    function codeRaining() {
        //把畫布擦干凈
        ctx.clearRect(0, 0, cw, ch);
        //創(chuàng)建有顏色的畫布
        //createColorCv();
        for (var n = 0; n < codeRainArr.length; n++) {
            //取出列
            col = codeRainArr[n];
            //遍歷列,畫出該列的代碼
            for (var i = 0; i < col.length; i++) {
                var code = col[i];
                if (code.y > ch) {
                    //如果超出下邊界則重置到頂部
                    code.y = 0;
                } else {
                    //勻速降落
                    code.y += code.speed;
                }
                
                //1 顏色也隨機(jī)變化
                //ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)"; 

                //2 綠色逐漸變淺
                // ctx.fillStyle = "hsl(123,80%,"+(30-i*2)+"%)"; 

                //3 綠色隨機(jī)
                // var r= 0;
                // var g= parseInt(Math.random()*255) + 3;
                // var b= 0;
                // ctx.fillStyle = "rgb("+r+','+g+','+b+")";

                //4 一致綠
                ctx.fillStyle = code.color;


                //把代碼畫出來
                ctx.fillText(code.text, code.x, code.y);
            }
        }
        requestAnimationFrame(codeRaining);
    }

    //創(chuàng)建代碼雨
    createCodeRain();
    //開始下雨吧 GO>>
    requestAnimationFrame(codeRaining);
</script>
   
</body>
</html>

到此,關(guān)于“一招實(shí)現(xiàn)“代碼雨”的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI