Сейчас загружается

Эффект Бегущего Кода на JS

Эффект Бегущего Кода на JS

Вот простой JavaScript-скрипт, который создаёт эффект «бегущего кода» на фоне страницы — похожий на знаменитую «матрицу», но вместо зелёных символов используются фрагменты JavaScript-кода (ключевые слова, операторы, символы и т.п.).

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>JS Code Rain</title>
  <style>
    body {
      margin: 0;
      overflow: hidden;
      background: black;
    }
    canvas {
      display: block;
    }
  </style>
</head>
<body>
  <canvas id="codeRain"></canvas>

  <script>
    // Получаем canvas и контекст
    const canvas = document.getElementById('codeRain');
    const ctx = canvas.getContext('2d');

    // Устанавливаем размер canvas под окно
    function resizeCanvas() {
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
    }
    window.addEventListener('resize', resizeCanvas);
    resizeCanvas();

    // Набор "кода" — символы и ключевые слова из JavaScript
    const jsSymbols = 
      "0123456789" +
      "abcdefghijklmnopqrstuvwxyz" +
      "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
      "{}[]()=+-*/%<>!&|^~?:;.,\\\"'`" +
      "ifelseforwhileswitchcasedefaultbreakcontinuereturnfunctionvarletconst" +
      "truefalseundefinednull";

    const fontSize = 14;
    const columns = Math.floor(canvas.width / fontSize); // количество столбцов

    // Массив для хранения текущей y-позиции каждого столбца
    const drops = new Array(columns).fill(0);

    // Основной цикл анимации
    function draw() {
      // Полупрозрачный чёрный прямоугольник создаёт эффект "затухания"
      ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
      ctx.fillRect(0, 0, canvas.width, canvas.height);

      // Цвет текста — зелёный (как в Матрице), но можно менять
      ctx.fillStyle = '#0F0';
      ctx.font = `${fontSize}px monospace`;

      for (let i = 0; i < drops.length; i++) {
        // Случайный символ из набора
        const text = jsSymbols.charAt(Math.floor(Math.random() * jsSymbols.length));

        // Рисуем символ
        ctx.fillText(text, i * fontSize, drops[i] * fontSize);

        // Если символ достиг низа или случайно "перезапускается"
        if (drops[i] * fontSize > canvas.height && Math.random() > 0.975) {
          drops[i] = 0;
        }

        // Сдвигаем символ вниз
        drops[i]++;
      }
    }

    // Запускаем анимацию
    setInterval(draw, 33); // ~30 кадров в секунду
  </script>
</body>
</html>

✅ Как это работает:

  • При загрузке страницы создаётся <canvas>, который растягивается на весь экран.
  • На нём рисуются падающие столбцы символов.
  • Символы выбираются из строки, содержащей типичные фрагменты JS-кода.

Share this content:

Отправить комментарий