两种雪花的动态效果代码,分别使用HTML/CSS和JavaScript实现

  1. 使用HTML/CSS实现雪花动态效果

 

html复制代码

<!DOCTYPE html>
<html>
<head>
<style>
.snowflake {
position: absolute;
top: 0;
background: white;
height: 5px;
width: 5px;
border-radius: 50%;
opacity: 0.7;
filter: blur(2px);
animation: fall linear infinite;
}
@keyframes fall {
to {
transform: translateY(100vh);
}
}
</style>
</head>
<body>
<div id="snowflakes"></div>
<script>
const snowflakesContainer = document.getElementById('snowflakes');
const numberOfSnowflakes = 100;
for (let i = 0; i < numberOfSnowflakes; i++) {
const snowflake = document.createElement('div');
snowflake.classList.add('snowflake');
snowflake.style.left = `${Math.random() * 100}vw`;
snowflake.style.animationDuration = `${Math.random() * 3 + 2}s`;
snowflake.style.animationDelay = `${Math.random() * 5}s`;
snowflakesContainer.appendChild(snowflake);
}
</script>
</body>
</html>

这段代码会在页面上生成100个雪花,每个雪花都会沿着屏幕垂直方向下落。雪花的初始位置、下落速度和延迟时间都是随机的,以创建更自然的效果。你可以根据需要调整雪花的数量、大小和下落速度。

  1. 使用JavaScript实现雪花动态效果(使用canvas)

 

html复制代码

<!DOCTYPE html>
<html>
<head>
<style>
canvas {
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<canvas id="snowCanvas"></canvas>
<script>
const canvas = document.getElementById('snowCanvas');
const ctx = canvas.getContext('2d');
const numberOfSnowflakes = 100;
const snowflakes = [];
class Snowflake {
constructor() {
this.x = Math.random() * canvas.width;
this.y = Math.random() * canvas.height;
this.size = Math.random() * 5 + 2;
this.speed = Math.random() * 1 + 0.5;
}
update() {
this.y += this.speed;
if (this.y > canvas.height) {
this.y = 0;
}
}
draw() {
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
ctx.fill();
}
}
function init() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
for (let i = 0; i < numberOfSnowflakes; i++) {
snowflakes.push(new Snowflake());
}
animate();
}
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
snowflakes.forEach(snowflake => {
snowflake.update();
snowflake.draw();
});
requestAnimationFrame(animate);
}
init();
</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue写了这么久了您是否知道:为什么data属性是一个函数而不是一个对象?

一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象&#xff0c;也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:"foo"},// 函数格式data(){return {foo:"foo"}} })组件中定义data属性&#xff…

BM61 矩阵最长递增路径

题目 矩阵最长递增路径 给定一个 n 行 m 列矩阵 matrix &#xff0c;矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径&#xff0c;使这条路径上的元素是递增的。并输出这条最长路径的长度。 这个路径必须满足以下条件&#xff1a; 1. 对于每个单元格&#xff0c;你…

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型

目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集&#xff0c;按照8&#xff1a;2划分训练集和测试集 2.2 设置滑动窗口大小为96&#xff0c;制作数据集 3 基于Pytorch的EMD-CNN-GRU并行模型预测 3.1 数据加载&a…

初识Dubbo学习,一文掌握Dubbo基础知识文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Ubuntu-报错

Hadoop-Eclipse-java&#xff1a;耽误进度的几个报错 错误1&#xff1a;桥接模式与NAT模式相互切换后导致两种模式都不能访问互联网&#xff08;1&#xff09;具体错误&#xff1a;&#xff08;2&#xff09;错误原因&#xff1a;&#xff08;3&#xff09;解决方案&#xff1a…

Redis设计与实现之订阅与发布

目录 一、 订阅与发布 1、 频道的订阅与信息发送 2、订阅频道 3、发送信息到频道 4、 退订频道 5、模式的订阅与信息发送 ​编辑 6、 订阅模式 7、 发送信息到模式 8、 退订模式 三、订阅消息断连 1、如果订阅者断开连接了&#xff0c;再次连接会不会丢失之前发布的消…

股票价格预测 | Python实现基于Stacked-LSTM的股票预测模型,可预测未来(keras)

文章目录 效果一览文章概述模型描述源码设计效果一览 文章概述 以股票价格预测为例,基于Stacked-LSTM的股票预测模型(keras),可预测未来。 模型描述 LSTM 用于处理序列数据,如时间序列、文本和音频。相对于传统的RNN,LSTM更擅长捕获长期依赖关系,

tomcat错误

Error running Tomcat8: Address localhost:1099 is already in use window环境&#xff0c;打开cmd netstat -ano | findstr :1099发现对应PID为24732 结束PID taskkill /PID 24732 /F

MATLAB图像处理技巧

MATLAB图片处理------动态绘图 1. 动态绘图2. XXXXX 1. 动态绘图 主要用到四个函数&#xff0c;分别为getframe、frame2im、rgb2ind以及imwrite&#xff1a; 1.getframe&#xff1a;获取当前绘图窗口的图片作为影片帧&#xff1b; 2.frame2im&#xff1a;从单个影片帧 F 返回索…

R语言【rgbif】——rgbif将物种分布数据转换为地图格式的详细说明

RGBIF&#xff08;R包&#xff09;是一个用于访问和使用物种分布数据的工具。它可以将物种分布数据转换为地图格式&#xff0c;以便更好地可视化和分析。 下面是使用RGBIF将物种分布数据转换为地图格式的详细说明&#xff1a; 步骤1&#xff1a;安装RGBIF包 要使用RGBIF包&am…

Redis Set类型

集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是无序的 2&#xff09;元素不允许重复 一个集合中最多可以存储2的32次方个元素。Redis 除了支持集合内的增删查改操作&#xff0c;同时还支持多个集合取交…

Axure元件的介绍使用以及登录界面

一、Axure元件介绍 简介&#xff1a; Axure元件是一种功能强大的设计工具&#xff0c;专门用于用户体验设计和交互设计。它可以帮助设计师创建可交互的原型&#xff0c;并实现各种界面元素的设计和布局。 Axure元件的基本特点包括&#xff1a; 多样性&#xff1a;Axure元件包括…

自动驾驶学习笔记(二十)——Planning算法

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 参考线平滑 双层状态机 EM Planner …

找到一些看似冷门但流量惊人的一些网站!- 独立产品灵感周刊 DecoHack #057

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以 点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。 &#x1f4bb; 产品推荐 1. Drawing Pics…

【Filament】绘制三角形

1 前言 Filament环境搭建中介绍了 Filament 的 Windows 和 Android 环境搭&#xff0c;本文将使用 Filament 绘制纯色和彩色三角形。 1.1 Filament 类图 1.2 图元 Filament 中图形的绘制都是基于三角形实现&#xff0c;三角形是构成复杂图形的最小基本单元。Filament 中输入模…

springMVC-模型数据的处理

一、数据放入到request域当中 1、把获取的数据放入request域中&#xff0c; 方便在跳转页面去显示 <a>添加主人信息</a> <form action"vote/vote04" method"post" >主人id&#xff1a;<input type"text" name"id&q…

JS中的模板字符串(ES6中的模板字面量语法),什么是模板字符串、怎么使用,附代码演示

模板字符串 1、JavaScript 在 ES6 新增了模板字符串语法。模板字符串可以作为普通字符串使用&#xff0c;其作用是可以在字符串中换行&#xff08;也就是支持多行字符串&#xff09;以及将变量和表达式插入字符串。 2、整个语法&#xff1a;使用反引号 &#xff0c;而不是单引…

MindOpt工具是如何做到配套使用的?请看此篇

Mindopt 介绍 MindOpt是阿里巴巴达摩院决策职能实验室研发的专注于优化领域&#xff0c;提供智能优化解决方案的品牌。主要的目标是帮助客户通过先进的优化算法和技术&#xff0c;实现业务流程的最佳化&#xff0c;提升效率&#xff0c;降低成本&#xff0c;并最大化业务价值。…

【强化学习-读书笔记】表格型问题的 Model-Free 方法

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto无模型方法 在前面的文章中&#xff0c;我们介绍的是有模型方法&#xff08;Model-Based&#xff09;。在强化学习中&#xff0c;"Model"可以理解为算法…

助力智能人群检测计数,基于YOLOv3开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…