Эффект Бегущего Кода на 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:



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