HTML大雪纷飞

news2024/9/24 19:23:46

图片

目录

写在前面

HTML简介

完整代码

代码分析

运行结果

系列文章

写在后面


写在前面

小编又又又出现啦!这次小编给大家带来大雪纷飞HTML版,不需要任何的环境,只要有一个浏览器,就可以随时随地下一场大雪哦!

HTML简介

简单来说就是:浏览器看得懂的语言

HTML(Hypertext Markup Language)是一种用于创建网页的标记语言。它使用一系列标签来描述页面的结构和内容,以便浏览器能够正确地解析和显示网页。

HTML最早于1990年由蒂姆·伯纳斯-李发明,他同时还发明了第一个Web浏览器。HTML的设计初衷是使文档之间能够互相链接,形成一个被称为“超文本”的新形式。超文本通过超链接将文档之间的关系连接起来,使用户能够轻松地浏览和导航网页。

HTML的基本单位是元素(element)。元素由一个开始标签和一个结束标签组成,中间是元素的内容。开始标签和结束标签之间还可以包含一些属性,这些属性可以提供有关元素的额外信息。例如,一个常见的元素是`<p>`,用于表示段落。它的使用方式是`<p>这是一段文本。</p>`,其中`<p>`是开始标签,`</p>`是结束标签,`这是一段文本。`是段落的内容。

HTML中有许多不同类型的元素,用于表示文字、图像、链接、表格、表单等。这些元素可以根据需要组合在一起,以创建具有不同功能和样式的网页。例如,可以使用`<h1>`到`<h6>`元素表示不同级别的标题,使用`<img>`元素插入图像,使用`<a>`元素创建链接等。

除了基本的元素之外,HTML还支持CSS(Cascading Style Sheets)用于控制网页的样式和布局,以及JavaScript用于实现动态和交互式效果。CSS和JavaScript可以与HTML配合使用,通过引用外部样式表和脚本文件来扩展和增强网页的功能。

HTML的发展不断推动着互联网的发展。随着技术的进步和用户需求的变化,HTML也在不断演进和更新。最新的HTML版本是HTML5,它引入了许多新的特性和功能,如多媒体支持、语义化标签、本地存储等,使网页更加丰富、灵活和易于开发。

总结来说,HTML是一种用于创建网页的标记语言,它使用一系列标签来描述页面的结构和内容。通过使用不同类型的元素,以及与CSS和JavaScript的结合,开发者可以创建出各种丰富、灵活和具有交互性的网页。

完整代码

<!DOCTYPE html>
<html>

<head>
	 
	<meta http-equiv="Content-Type" content="text/html; charset=GBK">
	 <style>
		* {
			margin: 0;
			padding: 0;
		}

		#box {
			width: 100vw;
			height: 100vh;
			padding: 3px;
			position: absolute;
			background: black;
		}
	</style>
</head>

<body>
	 <div id="box">
		 </div>
</body>
<script>
	(function () {
		var screenWidth = screen.availWidth;//设定天空宽度
		var screenHeight = screen.availHeight;//设定天空高度
		var speed = 1;
		function Snow(size, downSize) {
			this.box = document.getElementById("box");
			this.size = size;
			this.downSize = downSize || 10;
			this.item = [];
			this.init();
			this.start();
		}
		// 获取相关随机数据的方法
		Snow.prototype.getRandomThings = function (type) {
			var res;
			if (type == 'left') {//初始的left
				res = Math.round(Math.random() * (screenWidth - 30 - 10)) + 10;
				Math.random() > 0.8 ? (res = -res) : null;//这句是为了让左边有雪,因为雪是往右飘的,把left设置为负值,就会有的出现在左侧
			} else if (type == 'top') {//初始的top
				res = -(Math.round(Math.random() * (50 - 40)) + 40);
			} else if (type == 'incre') {//向下的速度
				res = Math.random() * (4 - 1) + 1;
			} else if (type == 'increLeft') {//向右的速度
				res = Math.random() * (0.8 - 0.5) + 0.5;
			} else {//雪花的大小
				res = Math.round(Math.random() * (30 - 10)) + 10;
			}
			return res;
		}
		Snow.prototype.init = function () {
			this.box.style.width = screenWidth + 'px';
			this.box.style.height = screenHeight + 'px';
			var fragment = document.createDocumentFragment();
			for (var i = 0; i < this.size; i++) {//创建好雪花
				var left = this.getRandomThings('left');
				var top = this.getRandomThings('top');
				var snowSize = this.getRandomThings('size');
				var snow = document.createElement("div");
				snow.style.cssText = 'position:absolute;color:#FFFFFF;';
				snow.style['font-size'] = snowSize + 'px';
				snow.style.left = left + 'px';
				snow.style.top = top + 'px';
				snow.innerHTML = '&#10052';
				this.item.push(snow);
				fragment.appendChild(snow);
			}
			box.appendChild(fragment);
		}
		Snow.prototype.start = function () {
			var that = this;
			var num = 0;
			for (var i = 0; i < this.size; i++) {
				var snow = this.item[i];
				if ((i + 1) % this.downSize == 0) {//这样处理的话,就可以指定每次落下多少雪花,不然刚开始是一股脑的下来
					num++;
				}
				(function (s, n) {//用闭包的方式
					setTimeout(function () {
						that.doStart(s);
					}, 1000 * n)
				})(snow, num)
			}
		}
		//针对每个雪花的定时处理
		Snow.prototype.doStart = function (snow) {
			var that = this;
			(function (s) {
				var increTop = that.getRandomThings('incre');
				var increLeft = that.getRandomThings('increLeft');
				var x = parseInt(getStyle(s, 'left')), y = parseInt(getStyle(s, 'top'));
				if (s.timmer) return;
				s.timmer = setInterval(function () {
					//超过右边或者底部重新开始
					if (y > (screenHeight - 5) || x > (screenWidth - 30)) {
						//重新回到天上开始往下
						increTop = that.getRandomThings('incre');
						increLeft = that.getRandomThings('increLeft');
						//重新随机属性
						var left = that.getRandomThings('left');
						var top = that.getRandomThings('top');
						var snowSize = that.getRandomThings('size');
						s.style.left = left + 'px';
						s.style.top = top + 'px';
						s.style['font-size'] = snowSize + 'px';
						y = top;
						x = left;
						n = 0;
						return;
					}
					//加上系数,当随大于0.5 速度加快,小于0.5 速度减慢,看起来飘的感觉
					x += Math.random() > 0.5 ? increLeft * 1.1 : increLeft * 0.9;
					y += Math.random() > 0.5 ? increTop * 1.1 : increTop * 0.9;
					//设定left top让雪动起来
					s.style.left = x + 'px';
					s.style.top = y + 'px';
				}, speed);
			})(snow)
		}
		//获取属性值
		function getStyle(obj, prop) {
			var prevComputedStyle = document.defaultView ? document.defaultView.getComputedStyle(obj, null) : obj.currentStyle;
			return prevComputedStyle[prop];
		}
		new Snow(300, 30);
	})()
</script>

</html>

代码分析

这段代码使用HTML和JavaScript实现了一个下雪效果的动画。以下是对代码的具体分析:

1.首先定义了一个Snow对象,该对象接受两个参数:size表示雪花的数量,downSize表示每次落下的雪花数量。

2. Snow对象的初始化方法init()用于设置天空的宽度和高度,并创建雪花元素。

3. 创建雪花元素时,使用了getRandomThings()方法获取随机的left、top、增加的速度和大小。雪花元素是以div元素的形式创建的,使用绝对定位和设置left、top属性来确定雪花的位置,通过设置字体大小来确定雪花的大小,使用特殊字符来表示雪花。

4. start()方法用于开始动画,根据downSize的值来设置每次落下雪花的数量,并为每个雪花设置定时器来执行下落的动画。

5. doStart()方法是每个雪花的具体下落动画实现,根据随机生成的增加的速度和left、top的值来控制雪花的移动,当雪花接触到屏幕的右边界或底部时,重新设置雪花的位置和速度,实现连续下落的效果。

6. getStyle()方法用于获取元素的CSS属性值。

这段代码通过使用HTML、CSS和JavaScript实现了一个下雪效果的动画,通过设置雪花的数量、大小和速度等参数,可以根据实际需要进行调整。

运行结果

图片

系列文章

序号目录直达链接
1HTML实现3D相册HTML实现3D相册-CSDN博客
2HTML元素周期表HTML元素周期表-CSDN博客
3HTML黑客帝国字母雨HTML黑客帝国字母雨_字母雨html-CSDN博客
4HTML五彩缤纷的爱心HTML五彩缤纷的爱心-CSDN博客
5HTML飘落的花瓣HTML飘落的花瓣-CSDN博客
6HTML哆啦A梦HTML哆啦A梦_html哆啦a梦代码-CSDN博客
7HTML爱情树HTML爱情树-CSDN博客
8HTML新春烟花盛宴HTML新春烟花盛宴-CSDN博客
9HTML想见你HTML想见你-CSDN博客
10HTML蓝色爱心HTML蓝色爱心-CSDN博客
11HTML跳动的爱心HTML跳动的爱心-CSDN博客
12HTML橙色爱心HTML橙色爱心-CSDN博客
13HTML大雪纷飞https://want595.blog.csdn.net/article/details/139136829
14
15
16
17
18
19
20
21
22
23
24
25
26
27

写在后面

我是一只有趣的兔子,感谢你的喜欢!

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

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

相关文章

从金蝶云星空到旺店通·企业奇门通过接口配置打通数据

从金蝶云星空到旺店通企业奇门通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用框架等&#xff0c;有…

QT:协议概述

文章目录 概念帧结构&#xff1a;通信流程 示例&#xff1a;请求帧&#xff1a;响应帧&#xff1a; 概念 帧结构&#xff1a; | SOF (1 byte) | Frame Length (1 byte) | Command (1 byte) | Data Field (N bytes) | Checksum (1 byte) | 通信流程 示例&#xff1a; 请求帧&a…

ld链接文件

文章目录 1. sections缩写2. 链接脚本2.1 MEMORY&#xff08;内存命令&#xff09;2.1.1 作用2.1.2 格式 2.2 SECTIONS&#xff08;段命令&#xff09;2.2.1 作用2.2.2 格式 2.3 特殊符号含义2.4 通配符2.5 Eg 1. sections缩写 2. 链接脚本 https://www.cnblogs.com/jianhua19…

如何处理 Google Chrome中的代理服务器错误?

如果您在 Google Chrome 浏览器中遇到代理服务器错误&#xff0c;您可以采取一些步骤来排除故障并解决问题。代理服务器充当您的设备和互联网之间的中介&#xff0c;与其相关的错误有时会破坏您的浏览体验。以下是帮助您解决该问题的一些步骤&#xff1a; 1. 检查您的互联网连接…

shell脚本编译成二进制文件shc

文章目录 1. 安装shc2. 使用shc编译Shell脚本3. 执行二进制文件4. 编译后执行效率 将Shell脚本转换为二进制执行文件&#xff0c;可以使用 shc工具。 shc是一个Shell编译器&#xff0c;它可以将Shell脚本编译成二进制文件。以下是详细步骤&#xff1a; 1. 安装shc 在大多数L…

图片缩放随心所欲,自定义保存尽在掌控,解锁全新图片处理神器,轻松驾驭视觉创作之旅!

在数字化浪潮汹涌的今天&#xff0c;图片作为视觉信息的核心载体&#xff0c;已经渗透到我们生活的方方面面。一张精美的图片&#xff0c;往往能够成为我们表达思想、分享生活的得力助手。然而&#xff0c;面对大小不一、格式各异的图片&#xff0c;如何轻松实现缩放并自定义保…

新火种AI|警钟长鸣!教唆自杀,威胁人类,破坏生态,AI的“反攻”值得深思...

作者&#xff1a;小岩 编辑&#xff1a;彩云 在昨天的文章中&#xff0c;我们提到了谷歌的AI Overview竟然教唆情绪低迷的网友“从金门大桥跳下去”。很多人觉得&#xff0c;这只是AI 模型的一次错误判断&#xff0c;不会有人真的会因此而照做。但现实就是比小说电影中的桥段…

Jetpack架构组件_2. 数据绑定库

1.理论基础 数据绑定库是一个支持库&#xff0c;可让您使用声明性格式&#xff08;而不是以程序化方式&#xff09;将布局中的界面组件绑定到应用中的数据源。 布局通常使用调用界面框架方法的代码在 activity 中定义。例如&#xff0c;以下代码会调用 findViewById() 来查找 T…

一键秒删TXT文本符号,释放工作效率新高度,轻松应对海量文本处理挑战!

在这个信息爆炸的时代&#xff0c;我们每天都会面对海量的文本信息。而在处理这些文本时&#xff0c;你是否曾经因为各种符号的干扰而头疼不已&#xff1f;现在&#xff0c;我们为你带来了一款高效批量处理工具&#xff0c;它能够一键删除TXT文本中的符号&#xff0c;让你的工作…

面试八-存泄漏是什么,有哪几种,怎么解决?

一、内存泄漏几种情况 当使用基类指针指向派生类对象时&#xff0c;如果基类的析构函数不是虚函数&#xff0c;那么在使用基类指针来删除这个对象时&#xff0c;只会调用基类的析构函数&#xff0c;而不会调用派生类的析构函数。这就导致了派生类中的资源无法正确释放&#xff…

前端使用JavaScript实现一个LRU缓存

引言 LRU&#xff08;Least Recently Used&#xff09;算法是一种广泛应用于内存管理和缓存系统的策略&#xff0c;在微前端、状态管理以及性能优化等场景下&#xff0c;合理使用缓存机制能够有效提升应用性能。本文将介绍LRU算法的基本原理&#xff0c;并通过JavaScript实现案…

MySQL(进阶)--索引

目录 一.存储引擎 1.MySQL体系结构​编辑 2.存储引擎简介 3.存储引擎特点 (1.InnoDB (2.MyISAM (3.Memory 4.存储引擎选择 二.索引 1.索引概述 2.索引结构 3.索引分类 4.索引语法 (1.创建索引 (2.查看索引 (3.删除索引 5.SQL性能分析 (1.SQL执行频率 (2.慢查…

Linux——Dockerfile部分参数(1)

在这里我们来整理一下docker容器、dockerfile、docker镜像的关系&#xff1a; dockerfile是面向开发的&#xff0c;发布项目做镜像的时候就要编写dockerfile文件。 dockerfile&#xff1a;构建文件&#xff0c;定义了一切的步骤&#xff0c;源代码。 dockerImanges&#xff1a…

为什么Facebook Marketplace无法使用?如何解决?

Facebook Marketplace是一个允许用户买卖商品的平台&#xff0c;由于其在Facebook内的便捷性&#xff0c;它逐渐成为了一个受欢迎的在线交易市场。然而&#xff0c;做Facebook跨境电商&#xff0c;很多人会面临的情况就是无法使用Facebook Marketplace。这到底是什么原因&#…

PSexec工具横向移动

一. 其他横向工具和命令介绍 之前我们讲解了IPC,PTH,PTK,PTH&#xff0c;其实这些东西都是用来进行认证的 IPC:使用明文的账号密码进行认证 PTH:使用NTLM-hash值进行认证 PTK:使用AES秘钥进行认证 PTT:使用票据进行认证认证通过之后如何实现远程上线内网其他的机器&#xff0…

23种设计模式全面总结 | 快速复习(附PDF+MD版本)

本篇文章是对于23种设计模式的一个全面的总结&#xff0c;受限于文章篇幅无法对每个设计模式做到全面的解析&#xff0c;但几乎每个设计模式都提供了案例和类图结构&#xff0c;非常适合快速复习和在学习设计模式之前的全预习把握。 &#x1f4a1;文章的 pdf markdown 版本可通…

智能座舱-车载声学技术训练营

语音交互赋能车载智能终端&#xff0c;成为智能座舱生态构建的核心功能 曾几何时&#xff0c;至少十年前&#xff0c;车内语音交互&#xff0c;大家都认为是“智障”阶段&#xff0c;基本上除了难用作为评价找不到其他的形容词做修饰。 但是随着技术的不断发展&#xff0c;特别…

2024年哪款充电宝好?热门罗马仕、西圣、倍思充电宝全方面实测

在这个人人都离不开手机的时代&#xff0c;出门坐车需要用到手机刷卡&#xff0c;吃饭点外卖需要用到手机&#xff0c;做旅游攻略需要用到手机等等&#xff0c;如果是出门一天的话不带充电宝&#xff0c;手机基本是不能够撑回到家的&#xff0c;这时候就需要一个充电宝辅助我们…

整理前端新出的操作工具好用又好玩(Custom Formatter,Oxlint,Nuxt DevTools,component-party)

1.使用Custom Formatter 使vue3中的reactive object 在Chrome在console中更易理解的方式展现 启用步骤&#xff1a; 1.打开控制台&#xff0c;然后打开console设置 2.前往proferences中的Console&#xff0c;勾选Enable custom formatters选项 3.刷新页面 2.使用css Overv…

【NumPy】权威指南:使用NumPy的percentile函数进行百分位数计算

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…