JS實現代碼雨特效

本文實例為大傢分享瞭JS實現代碼雨特效的具體代碼,供大傢參考,具體內容如下

html代碼

<canvas id="code_rain_canvas" width="1440" height="900"></canvas>

js 代碼

window.onload = function() {
         //獲取畫佈對象
         var canvas = document.getElementById("code_rain_canvas");
         //獲取畫佈的上下文
         var context = canvas.getContext("2d");
         var s = window.screen;
         var W = canvas.width = s.width;
         var H = canvas.height;
         //獲取瀏覽器屏幕的寬度和高度
         //var W = window.innerWidth;
         //var H = window.innerHeight;
         //設置canvas的寬度和高度
         canvas.width = W;
         canvas.height = H;
         //每個文字的字體大小
         var fontSize = 12;
         //計算列
         var colunms = Math.floor(W / fontSize);
         //記錄每列文字的y軸坐標
         var drops = [];
         //給每一個文字初始化一個起始點的位置
         for (var i = 0; i < colunms; i++) {
             drops.push(0);
         }
         //運動的文字
         var str = "WELCOME TO WWW.ITRHX.COM";
         //4:fillText(str,x,y);原理就是去更改y的坐標位置
         //繪畫的函數
         function draw() {
             context.fillStyle = "rgba(238,238,238,.08)"; //遮蓋層
             context.fillRect(0, 0, W, H);
             //給字體設置樣式
             context.font = "600 " + fontSize + "px  Georgia";
             //給字體添加顏色
             context.fillStyle = ["#33B5E5", "#0099CC", "#AA66CC", "#9933CC", "#99CC00", "#669900", "#FFBB33", "#FF8800", "#FF4444", "#CC0000"][parseInt(Math.random() * 10)]; //randColor();可以rgb,hsl, 標準色,十六進制顏色
             //寫入畫佈中
             for (var i = 0; i < colunms; i++) {
                 var index = Math.floor(Math.random() * str.length);
                 var x = i * fontSize;
                 var y = drops[i] * fontSize;
                 context.fillText(str[index], x, y);
                 //如果要改變時間,肯定就是改變每次他的起點
                 if (y >= canvas.height && Math.random() > 0.99) {
                     drops[i] = 0;
                 }
                 drops[i]++;
             }
         };

         function randColor() { //隨機顏色
             var r = Math.floor(Math.random() * 256);
             var g = Math.floor(Math.random() * 256);
             var b = Math.floor(Math.random() * 256);
             return "rgb(" + r + "," + g + "," + b + ")";
         }
         draw();
         setInterval(draw, 35);
     };

展示效果:

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: