js实现雪花飘落效果

2023-11-11

js实现雪花飘落效果

我们可以先看看效果
点这里 雪花
雪花飘落其实总的代码都不到 100 行,代码很少,因此 css 样式 和 js 代码我都放在一个 HTML 文件里面了

  1. 我们先看看主体的 HTML 代码
 <body>
		<div id="xh"></div>
</body>

html 的代码就只有一行

  1. 我们再看看 css 的样式
body {
				background-color: black;
		}
		
		#xh {
			position: relative;
		}
		
		.xue {
			position: absolute;
			display: inline-block;
			/* opacity: .7; */
			outline: none;
			border: none;
			animation: xuehua 5s infinite linear;
		}
		
		.xue:hover {
			cursor: pointer;
			animation-play-state: paused;
			opacity: 1;
		}
		
		@keyframes xuehua{
			from{
				opacity: 1;
				transform: translate(0, 0) rotate(0deg);
			}
			to{
				opacity: 0;
				transform: translate(0, 700px) rotateZ(720deg) rotateY(720deg) scale(1.5);
			}
		}

HTML 中唯一的 div#xh 给它设为 相对定位 relative ,便于它的子元素雪花定位。.xue 这个类设置为 绝对定位 absolute,便于改变它的 top 值,这个就不用多讲了吧。最主要的是 xuehua 这个动画,刚开始它的透明度设置为 1,慢慢地过渡到 0 ,位置也是从初始位置慢慢地往下移动,rotate 表示变换,边下落边变换。

  1. 现在我们来看看最主要的 js 代码
<script type="text/javascript">
		
		var xh = document.getElementById("xh");
		/// 屏幕宽度
		var dWidth = document.body.scrollWidth;
		var dHeight = window.innerHeight;
		var setXH = setInterval(function(){production();}, 100);
		
		xh.style.height = dHeight;
		
		function production()
		{
			var t1 = document.createElement("div");
			/// left 和 top 最大值
			/// left 减掉 100 是为了不产生横行的滑动条
			var t1Left = Math.floor(Math.random() * dWidth) - 100;
			var t1Top = Math.floor(Math.random() * 10);
			
			t1.style.left = t1Left + "px";
			t1.style.top = t1Top + "px";
			t1.style.display = "inline-block";
			t1.innerText = "❉";
			t1.style.color = "white";
			t1.classList.add("xue");
			/// 将生成的雪花加入到 div 下面去
			xh.appendChild(t1);
			
			setInterval(function(){
				t1.remove();
			}, 5000);
		}
	</script>

在这里我大概的思路是这样的
1. 获取到一个容器(也就是HTML中的唯一一个div),保存到 xh 变量中
2. 获取屏幕的宽度(用于让雪花随机从不同的位置下落)
3. 设置一个计时器(用于产生雪花),我这里是每 100 毫秒产生一个 雪花
4. production 这个函数主要是产生雪花,里面的各种设置雪花的参数我就不一一介绍了。里面我用到了随机函数 random(),其作用就是让雪花下落的位置不同。然后参数设置好的雪花加入到div下面去(appendChild)
5. 最后我又设置了一个计时器,作用是每过 5000 毫秒(也就是 5s)就让移除一个雪花


雪花飘落的大致实现过程就是这样啦,要是哪位大佬有什么指导可以直接留言哦,很感谢你们提出的意见呢。大家有什么创意也可以留言哦,这也是提升的一种方法呢
哪个朋友想要源码可以留下邮箱,我直接发给你哦
最后祝大家身体健康~~~~

个人博客 http://www.sharekong.xyz 欢迎访问

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现雪花飘落效果 的相关文章

随机推荐

  • 前端开发环境,飞速搭建!

    安装 git ssh 配置 生成 ssh keygen t rsa C you email 添加 ssh add ssh id rsa username email git config global user name username
  • 做JAVA开发的同学一定遇到过的爆表问题,看这里解决

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由净地发表于云 社区专栏 记一次Java线上服务器CPU过载问题的排查过程 详解排查过程中用到的Java性能监测工具 jvisualvm jstack jstat jmap 背景
  • 黑苹果使用Karabiner-Elements改Windows快捷键教程

    黑苹果改Windows快捷键 1 下载安装 karabiner 软件 2 设置karabiner 1 下载安装 karabiner 软件 下载链接 私信我无偿分享百度云下载链接 2 设置karabiner 安装完成后会提示给软件权限 请根据
  • nginx 优化系列之worker_connections

    http ddbiz com blog web E6 9C 8D E5 8A A1 nginx E4 BC 98 E5 8C 96 E7 B3 BB E5 88 97 E4 B9 8Bworker connections 153 nginx
  • vue权限管理系统

    vue权限系统 后台管理系统一般都会有权限模块 用来控制用户能访问哪些页面和哪些数据接口 大多数管理系统的页面都长这样 左边为菜单 分为两级 右边为图表显示区域 有增删改查的按钮 表的结构 SET NAMES utf8mb4 SET FOR
  • Node.JS如何升级

    一 前言 网上许多的NodeJS升级使用全局N模块很多情况下会不成功 所以这里介绍一种方便快捷的升级NodeJS方法 二 升级NodeJS版本 在官网将LTS版本的NodeJS下载下来 历史版本 不用卸载较低版本 直接打开安装包安装 一直N
  • 罗马数字转整数(Java实现)

    罗马数字转整数 Java实现 罗马数字包含以下七种字符 I V X L C D 和 M 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如 罗马数字 2 写做 II 即为两个并列的 1 12 写做 X
  • 配置常用yum源(国内yum源)

    记录 356 场景 在CentOS 7 9操作系统上 使用国内开源镜像站配置常用yum源 满足使用yum命令安装各类软件需求 包括CentOS基础包 epel包 scl包 k8s等 版本 操作系统 CentOS 7 9 开源镜像站 阿里云开
  • Mybatis学习笔记2:CRUD操作及MybatisConfig.xml配置解析

    一 CRUD操作 1 select select语句有很多属性可以详细配置每一条sql语句 sql的返回值类型 传入sql语句的参数类型 命名空间唯一标识符 接口中的方法名与映射文件中的sql语句id要对应 id parameterType
  • Eclipse 乱码 解决方案总结(UTF8 -- GBK)

    UTF8 gt GBK GBK gt UTF8 eclipse的中文乱码问题 一般不外乎是由操作系统平台编码的不一致导致 如Linux中默认的中文字体编码问UTF8 而Windows默认的中文编码为GBK 因此将Linux和Windows下
  • 图像均值滤波简介及实现

    一 均值滤波简介和原理 均值滤波 是图像处理中常用的手段 从频率域观点来看均值滤波是一种低通滤波器 高频信号将会去掉 均值滤波可以帮助消除图像尖锐噪声 实现图像平滑 模糊等功能 理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像
  • ubuntu-多网卡聚合-bond技术教程-配置interfaces

    目录 1 Bond的工作模式 2 配置步骤 3 删除bond 4 总结 5 发现的问题 注意 以下配置步骤 只测试了ubuntu20 04有效 其他版本没试过 经查阅资料 建议ubuntu20 04以前的版本使用本文章方法 含ubuntu2
  • IntelliJ IDEA常用插件及其安装

    插件列表 环境 MacOS平台 IDEA版本 2019 3 类别 插件名称 插件描述 备注 美化 Material Theme UI不免费了 建议用Solarized Themes 一款IDEA主题插件 个人用Light Owl或Solar
  • 用jackson序列化No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer

    jackson序列化 用jackson将对象序列化字符串的时候出现了下面No serializer found for class org hibernate proxy pojo javassist JavassistLazyInitia
  • 【FFmpeg实战】FFplay音频滤镜分析

    原文地址 https juejin cn post 7153334309208719368 音频流的 滤镜是通过 configure audio filters 函数来创建的 因为 ffplay 为了代码的通用性 即便命令行参数不使用滤镜
  • 因计算机中丢失msvcr120.dll,msvcr120.dll丢失怎样修复 附解决方法

    运程程序时如果提示这个 那么是因为你的电脑里没有vc 运行库导致的 不要从网上一个一个下载msvcr120 dll这样的文件放到系统目录里 因为有很多文件 真正的解决方法是下载并安装微软VC 2013版运行库 就可以修复这个问题 直接百度搜
  • 算法记录题四

    1 什么是集成学习算法 2 集成学习主要有哪几种框架 并简述他们的工作过程 3 Boosting算法有哪两类 他们之间的区别是什么 4 什么是偏差和方差 5 如何从减少方差和偏差的角度解释Boosting和Bagging的康 6 随机森林的
  • 【MySQL】SQL之CASE WHEN用法详解

    目录 一 简单CASE WHEN函数 二 CASE WHEN条件表达式函数 三 常用场景 场景1 不同状态展示为不同的值 场景2 统计不同状态下的值 场景3 配合聚合函数做统计 场景4 CASE WHEN中使用子查询 场景5 经典行转列 结
  • 51 openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载

    文章目录 51 openEuler搭建PostgreSQL数据库服务器 安装 运行和卸载 51 1 安装 51 2 运行 51 2 1 初始化数据库 51 2 2 启动数据库 51 2 3 登录数据库 51 2 4 配置数据库账号密码 51
  • js实现雪花飘落效果

    js实现雪花飘落效果 我们可以先看看效果 点这里 雪花 其实总的代码都不到 100 行 代码很少 因此 css 样式 和 js 代码我都放在一个 HTML 文件里面了 我们先看看主体的 HTML 代码 div div html 的代码就只有