|
|
|
|
|
by karteum
1367 days ago
|
|
For simple matrix-like effects, I use <canvas id="matrix" style="display:block; position: fixed; top: 0; left: 0; z-index: -100;"></canvas>
<script type="text/javascript">
var matrix = document.getElementById("matrix");
var matrix_ctx = matrix.getContext("2d");
var mletters = "01"
var font_size = 10;
matrix_ctx.font = font_size + "px arial";
matrix.height = window.innerHeight;
matrix.width = window.innerWidth;
var columns = Math.floor(matrix.width/font_size);
var lines = matrix.height/font_size;
var drops_reinit_threshold = 0.975; // lower value means more frequent reinit and therefore more drops
var drops_y = Array(columns).fill(1);
function draw()
{
matrix_ctx.fillStyle = "rgba(10, 10, 10, 0.04)"
matrix_ctx.fillRect(0, 0, matrix.width, matrix.height);
matrix_ctx.fillStyle = "#050"; // green text
for(var i = 0; i<columns; i++)
{
var letter = mletters[Math.floor(Math.random()*mletters.length)];
if (drops_y[i]*font_size <= matrix.height)
matrix_ctx.fillText(letter, i*font_size, drops_y[i]*font_size);
else if(Math.random() > drops_reinit_threshold)
drops_y[i] = 0;
drops_y[i]++;
}
}
for(var x = 0; x < 2*lines; x++) draw();
setInterval(draw, 35);
</script>
|
|