1. 程式人生 > 程式設計 >JS畫布動態實現黑客帝國背景效果

JS畫布動態實現黑客帝國背景效果

本文例項為大家分享了JS畫布動態實現黑客帝國背景效果的具體程式碼,供大家參考,具體內容如下

效果圖

JS畫布動態實現黑客帝國背景效果

完整程式碼

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    *{
      padding:0;
      margin:0;
    }
    body{
      overflow: hidden;
    }
  </style>
</head>
<body>
    <canvas id="mom" style="background:#111"></canvas>
  <script>
   window.onload = function(){
    //獲取畫布物件
    var canvas = document.getElementById("mom");
    //獲取畫布的上下文
    //getContext() 方法返回一個用於在畫布上繪圖的環境。
    var context =canvas.getContext("2d");
    //獲取瀏覽器螢幕的寬度和高度
    var W = window.innerWidth;
    var H = window.innerHeight;
    //設定canvas的寬度和高度
    canvas.width = W;
    canvas.height = H;
    //每個文字的字型大小
    var fontSize = 16;
    //計算列
    var colunms = Math.floor(W /fontSize);
    //記錄每列文字的y軸座標
    var drops = [];
    //給每一個文字初始化一個起始點的位置
    //計算每一個文字所謂座標 儲存y軸的座標 
    for(var i=0;i<colunms;i++){
      drops.push(0);
    }
    //運動的文字
    var str ="JavaScript function(){}";
    //4:fillText(str,x,y);原理就是去更改y的座標位置
    //繪畫的函式
    function draw(){
      context.fillStyle = "rgba(0,0.05)";
      //fillRect() 方法繪製“已填色”的矩形。預設的填充顏色是黑色。
      context.fillRect(0,W,H);
      //給字型設定樣式
      context.font = "700 "+fontSize+"px 微軟雅黑";
      //給字型新增顏色
      context.fillStyle ="#00cc33";//可以rgb,hsl,標準色,十六進位制顏色
      //寫入畫布中
      for(var i=0;i<colunms;i++){
        var index = Math.floor(Math.random() * str.length);//設定文字出發時間隨機 Math.floor(Math.random()*str.length)讓數組裡面的文字索引隨機出現 
        var x = i*fontSize;
        var y = drops[i] *fontSize;//也讓y軸方向也向下掉一個文字的距離
        context.fillText(str[index],y);
        // //如果要改變時間,肯定就是改變每次他的起點
        if(y >= canvas.height && Math.random()>0.99){
          drops[i] = 0;
        }
        drops[i]++;//讓數組裡面的值每次加一,用於上面的y軸下掉 
      }
    };
    //隨機顏色
    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,20);
  };
  </script>
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。