当前位置:首页 > JavaScript

js实现代码雨

2026-01-15 14:17:46JavaScript

实现代码雨效果

使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明:

HTML结构

<!DOCTYPE html>
<html>
<head>
    <title>代码雨效果</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
            background: black;
        }
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script src="script.js"></script>
</body>
</html>

JavaScript实现

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

// 设置画布大小为窗口大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// 定义字符集
const chars = "01";
const fontSize = 16;
const columns = canvas.width / fontSize;

// 初始化雨滴数组
const rainDrops = [];
for (let i = 0; i < columns; i++) {
    rainDrops[i] = 1;
}

// 绘制函数
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 < rainDrops.length; i++) {
        const text = chars.charAt(Math.floor(Math.random() * chars.length));
        ctx.fillText(text, i * fontSize, rainDrops[i] * fontSize);

        // 随机重置雨滴位置
        if (rainDrops[i] * fontSize > canvas.height && Math.random() > 0.975) {
            rainDrops[i] = 0;
        }
        rainDrops[i]++;
    }
}

// 动画循环
setInterval(draw, 30);

// 窗口大小调整时重置画布
window.addEventListener('resize', () => {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
});

自定义选项

可以通过修改以下参数来自定义效果:

  • 更改chars变量使用不同的字符集
  • 调整fontSize改变字符大小
  • 修改ctx.fillStyle改变文字颜色
  • 调整setInterval的时间间隔控制动画速度

高级优化版本

更复杂的实现可以包含以下特性:

// 添加渐变颜色效果
const gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
gradient.addColorStop(0, '#0F0');
gradient.addColorStop(0.5, '#0A0');
gradient.addColorStop(1, '#050');
ctx.fillStyle = gradient;

// 添加随机速度
const speeds = [];
for (let i = 0; i < columns; i++) {
    speeds[i] = 1 + Math.random() * 3;
}

// 在draw函数中使用速度
rainDrops[i] += speeds[i] / 10;

实现原理

代码雨效果的核心原理是利用Canvas API不断绘制和更新字符位置。通过半透明的背景叠加产生拖尾效果,随机字符和位置重置创造下雨的视觉感受。调整参数可以产生不同风格的数字雨效果。

js实现代码雨

标签: 代码js
分享给朋友:

相关文章

代码实现vue

代码实现vue

安装Vue.js 通过npm或yarn安装Vue.js最新稳定版本。确保已安装Node.js环境。 npm install vue # 或 yarn add vue 创建Vue实例 在HTML文件中…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…