当前位置: 首页 > news >正文

用HTML5 + JavaScript实现下雪效果

用HTML5 + JavaScript实现下雪效果

下面是用HTML5 + JavaScript实现下雪效果示例,展示了如何使用 HTML5 的 <canvas> 元素以及 JavaScript 来创建下雪效果。效果如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Snow Effect</title><style>body {margin: 0;overflow: hidden;background-color: #D3D3D3;}canvas {display: block;}</style>
</head>
<body><canvas id="snow"></canvas></body><script>
document.addEventListener('DOMContentLoaded', function() {var canvas = document.getElementById('snow');var ctx = canvas.getContext('2d');// 设置 canvas 的大小为全屏canvas.width = window.innerWidth;canvas.height = window.innerHeight;// 雪花的数量var numberOfSnowflakes = 100;var snowflakes = [];for (var i = 0; i < numberOfSnowflakes; i++) {snowflakes.push({x: Math.random() * canvas.width,y: Math.random() * canvas.height,radius: Math.random() * 4 + 1,density: Math.random() * numberOfSnowflakes});}// 绘制雪花function drawSnowflakes() {ctx.clearRect(0, 0, canvas.width, canvas.height);ctx.fillStyle = 'white';ctx.beginPath();for (var i = 0; i < numberOfSnowflakes; i++) {var snowflake = snowflakes[i];ctx.moveTo(snowflake.x, snowflake.y);ctx.arc(snowflake.x, snowflake.y, snowflake.radius, 0, Math.PI * 2, true);}ctx.fill();moveSnowflakes();}// 移动雪花function moveSnowflakes() {for (var i = 0; i < numberOfSnowflakes; i++) {var snowflake = snowflakes[i];snowflake.y += Math.pow(snowflake.density, 0.5) + 1;snowflake.x += Math.sin(snowflake.y);// 当雪花到达屏幕底部时,重新设置它们的位置if (snowflake.y > canvas.height) {snowflakes[i] = {x: Math.random() * canvas.width,y: 0,radius: snowflake.radius,density: snowflake.density};}}}// 使用 requestAnimationFrame 来持续绘制雪花function animate() {requestAnimationFrame(animate);drawSnowflakes();}animate();
});
</script>
</html>

通过 CSS 控制背景颜色,JavaScript和 <canvas> 负责实现下雪效果。drawSnowflakes 函数负责绘制雪花,而 moveSnowflakes 函数则更新每个雪花的位置,使它们下落。animate 函数使用 requestAnimationFrame 来创建一个循环,不断绘制和更新雪花,从而实现动态的下雪效果。

改进:加入背景图片,并确保图片等比例缩放以适应浏览器窗口的大小。通过 CSS 控制背景颜色或图片,JavaScript 和 <canvas> 负责动态效果,两者相互独立,易于管理和修改。

你可以将背景图片作为 <body> 标签的背景,使用 CSS 来设置并确保其等比例缩放,通过 CSS 的 background 属性来实现:

            background-color: #D3D3D3;

改为:

            background: url(' snow_background.jpg') no-repeat center center fixed;

            background-size: cover;

其中,snow_background.jpg,我这里用:

效果如下:

OK!

http://www.lryc.cn/news/292861.html

相关文章:

  • PDF操作——批量删除末页
  • Jasperreport 生成 PDF之省纸模式
  • IDEA反编译Jar包
  • MySQL 备份恢复
  • UbuntuServer22.04LTS在线安装MySQL8.x
  • GmSSL - GmSSL的编译、安装和命令行基本指令
  • 面试题:为什么MySQL不建议使用NULL作为列默认值?
  • ClickHouse基于数据分析常用函数
  • c语言编译和链接
  • C++ printf解释
  • paddle环境安装
  • kingbase配置SSL双向认证
  • Android Studio 使用小记2 Flutter提交SVN时需要忽略哪些文件
  • 搜索引擎评价指标及指标间的关系
  • armbian修改docker目录到硬盘
  • cip、ethernet/ip开源协议栈:开发源代码
  • 网络原理TCP/IP(2)
  • Echars3D 饼图开发
  • 【PaddleSpeech】语音合成-男声
  • AI-数学-高中-17-三角函数的定义
  • centOS/Linux系统安全加固方案手册
  • 编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程
  • 完整的 HTTP 请求所经历的步骤及分布式事务解决方案
  • SpringMVC请求和响应
  • AIGC实战——深度学习 (Deep Learning, DL)
  • Django_基本增删改查
  • 数仓治理-存储资源治理
  • Linux系统安全:安全技术 和 防火墙
  • 3dmatch-toolbox详细安装教程-Ubuntu14.04
  • Hadoop与Spark横向比较【大数据扫盲】