基于HTML 使用星辰拼出爱心,并附带闪烁+流星+点击生成流星

代码文件:「基于html实现流星+星辰」,链接:https://pan.quark.cn/s/59679c01ebc5

核心功能概述

该代码实现了以下主要功能:

  1. 动态星空背景:包含闪烁的随机星星和特定图案(心形)排列的星星
  2. 流星动画效果:随机生成流星划过屏幕,带有轨迹和光晕效果
  3. 交互式体验:点击画布任意位置可生成流星
  4. 响应式设计:自动适应窗口大小变化

技术实现分析

基础设置

代码首先获取 Canvas 元素并设置其上下文,通过 resizeCanvas 函数确保画布尺寸与窗口大小一致:

javascript 复制代码
const canvas = document.getElementById('meteorCanvas');
const ctx = canvas.getContext('2d');

function resizeCanvas() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
}

星空系统

星空系统由两部分组成:随机背景星星和图案星星。初始化函数 initStars 创建两种类型的星星:

  1. 图案星星:通过数学公式生成心形图案的点,添加适当随机偏移使分布更自然
  2. 背景星星:随机分布在整个画布上的星星

所有星星都具有闪烁效果,通过改变透明度实现,闪烁速度和方向各不相同,增强视觉层次感。

流星系统

流星系统包含以下关键组件:

  1. 随机生成流星createMeteor 函数从屏幕左侧或上方随机位置生成流星,向右下方飞行
  2. 点击生成流星createMeteorAtPosition 函数允许用户在点击位置创建流星
  3. 定时生成scheduleMeteors 函数以随机间隔(0.5-1.5秒)自动生成流星
  4. 动态渲染drawMeteors 函数处理流星的运动轨迹、透明度渐变和消失逻辑

流星视觉效果通过以下技术实现:

  • 使用线性渐变创建流星头部亮、尾部渐隐的效果
  • 添加光晕效果增强视觉冲击力
  • 流星轨迹通过数学计算确保自然流畅的运动路径

动画循环

动画通过 requestAnimationFrame 实现高效循环渲染:

javascript 复制代码
function animate() {
    // 清空画布
    ctx.fillStyle = 'black';
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    // 绘制星星和流星
    drawStars();
    drawMeteors();

    // 请求下一帧
    requestAnimationFrame(animate);
}

图案生成技术

代码中实现了一个灵活的图案生成系统,通过数学公式计算点坐标:

javascript 复制代码
function getPatternPoints(patternType, centerX, centerY, size) {
    // 使用参数方程生成心形图案点
    for (let t = 0; t <= Math.PI * 2; t += 0.05) {
        const x = 20 * Math.pow(Math.sin(t), 3);
        const y = 15 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);
        // 缩放并定位点
    }
}

用户交互设计

用户交互通过鼠标点击事件实现,点击后会在点击位置生成1-3个流星,使用 setTimeout 添加延迟使效果更自然。点击事件监听器获取相对于 Canvas 的坐标位置,确保流星在正确位置生成。

相关推荐
崔庆才丨静觅1 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅3 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊3 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax