CSS3-流星雨

news2025/3/18 1:39:18

1. 绘制标签

<div class="container">
	<span></span>
</div>

2. 设置div背景

在百度上搜索一幅星空的图片

<style>
	* {
		/* 初始化 */
		margin: 0;
		padding: 0;
	}

	body {
		/* 高度100% */
		height: 100vh;
		/* 溢出隐藏 */
		overflow: hidden;
	}

	.container {
		background: url(xk1.jpg) no-repeat;
		width: 100%;
		height: 100%;
		position: absolute;
		/* 把背景图像扩展到足够大,使背景图像覆盖背景区域 */
		background-size: cover;
		/* 背景图像设置为正中间 */
		background-position: center;
	}
</style>

在这里插入图片描述

3. 绘制流星和尾巴

span {
	width: 10px;
	height: 10px;
	background-color: #fff;
	position: absolute;
	left: 50%;
	top: 50%;
	/* 圆角 */
	border-radius: 50%;
	/* 发光效果 
	0 x轴方向的长度
	0 y轴方向的长度
	10 阴影模糊度,只能为正数
	4  阴影的扩散半径				
	*/
	box-shadow: 0px 0 10px 4px rgba(255, 255, 255, 1);

}


span::before {
	content: "";
	width: 300px;
	height: 3px;
	/* 渐变背景 90度,由#fff 向完全透明渐变 */
	background: linear-gradient(90deg, #fff, transparent);
	position: absolute;
	top: 50%;
}

在这里插入图片描述

4. 添加背景缩放的动画

/* 定义动画 ,背景缩放*/
@keyframes animateBg {

	0%,
	100% {
		transform: scale(1);
	}

	50% {
		transform: scale(1.2);
	}
}

添加动画到 .container 的样式中
在这里插入图片描述

5. 流星动画

@keyframes animateLx {
	0% {
		/* 角度旋转315度,x方向移动0px */
		transform: rotate(315deg) translateX(0);
		opacity: 1;
	}

	90% {
		opacity: 1;
	}

	100% {
		/* 角度旋转315度,x方向移动-1000px 向左边移动 */
		transform: rotate(315deg) translateX(-1000px);
		opacity: 0;
	}
}

添加动画到span标签上
在这里插入图片描述

6. 为第一个span单独设置动画出现的位置,和动画效果

span:nth-child(1) {
	top: 0px;
	left: initial;
	right: 0px;
	/* 动画延迟时间 */
	animation-delay: 0s;
	/* 动画时长 */
	animation-duration: 1s;
}

请添加图片描述

7. 为第二个span单独设置动画出现的位置,和动画效果

span:nth-child(2) {
	top: 0px;
	right: 80px;
	left: initial;
	animation-delay: 0.1s;
	animation-duration: 3s;
}

在这里插入图片描述

请添加图片描述

8. 后续

每添加一个标记,就添加一个对应的样式,通过改变top ,right ,动画延时,动画时长等参数,生成不同的流星

请添加图片描述

9. 完整代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>流星雨划过天际的动画</title>
		<style>
			* {
				/* 初始化 */
				margin: 0;
				padding: 0;
			}

			body {
				/* 高度100% */
				height: 100vh;
				/* 溢出隐藏 */
				overflow: hidden;
			}

			.container {
				background: url(xk1.jpg) no-repeat;
				width: 100%;
				height: 100%;
				position: absolute;
				/* 把背景图像扩展到足够大,使背景图像覆盖背景区域 */
				background-size: cover;
				/* 背景图像设置为正中间 */
				background-position: center;

				/* 执行动画,时长,线性的,无限次数播放 */
				animation: animateBg 5s linear infinite;
			}

			span {
				width: 10px;
				height: 10px;
				background-color: #fff;
				position: absolute;
				left: 50%;
				top: 50%;
				/* 圆角 */
				border-radius: 50%;
				/* 发光效果 
				0 x轴方向的长度
				0 y轴方向的长度
				10 阴影模糊度,只能为正数
				4  阴影的扩散半径				
				*/
				box-shadow: 0px 0 10px 4px rgba(255, 255, 255, 1);
				animation: animateLx 3s linear infinite;

			}


			span::before {
				content: "";
				width: 300px;
				height: 3px;
				/* 渐变背景 90度,由#fff 向完全透明渐变 */
				background: linear-gradient(90deg, #fff, transparent);
				position: absolute;
				top: 50%;
			}

			/* 定义动画 ,背景缩放*/
			@keyframes animateBg {

				0%,
				100% {
					transform: scale(1);
				}

				50% {
					transform: scale(1.2);
				}
			}

			@keyframes animateLx {
				0% {
					transform: rotate(315deg) translateX(0);
					opacity: 1;
				}

				90% {
					opacity: 1;
				}

				100% {
					transform: rotate(315deg) translateX(-1000px);
					opacity: 0;
				}
			}

			span:nth-child(1) {
				top: 0px;
				right: 0px;
				left: initial;
				/* 动画延迟时间 */
				animation-delay: 0s;
				/* 动画时长 */
				animation-duration: 1s;
			}

			span:nth-child(2) {
				top: 0px;
				right: 80px;
				left: initial;
				animation-delay: 0.1s;
				animation-duration: 3s;
			}

			span:nth-child(3) {
				top: 80px;
				right: 0px;
				left: initial;
				animation-delay: 0.4s;
				animation-duration: 2s;
			}

			span:nth-child(4) {
				top: 0px;
				right: 10px;
				left: initial;
				animation-delay: 0.7s;
				animation-duration: 2s;
			}

			span:nth-child(5) {
				top: 0px;
				right: 400px;
				left: initial;
				animation-delay: 0.8s;
				animation-duration: 2.5s;
			}

			span:nth-child(6) {
				top: 0px;
				right: 600px;
				left: initial;
				animation-delay: 1s;
				animation-duration: 3s;
			}

			span:nth-child(7) {
				top: 300px;
				right: 0px;
				left: initial;
				animation-delay: 1.2s;
				animation-duration: 1.75s;
			}

			span:nth-child(8) {
				top: 0px;
				right: 700px;
				left: initial;
				animation-delay: 1.4s;
				animation-duration: 1.25s;
			}

			span:nth-child(9) {
				top: 0px;
				right: 1000px;
				left: initial;
				animation-delay: 0.75s;
				animation-duration: 2.25s;
			}

			span:nth-child(10) {
				top: 0px;
				right: 450px;
				left: initial;
				animation-delay: 2.75s;
				animation-duration: 2.25s;
			}
		</style>
	</head>
	<body>
		<div class="container">
			<!--10个span-->
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
			<span></span>
		</div>
	</body>
</html>

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

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

相关文章

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型&#xff0c;然后再以编程的形式输出出来 算法都知道&#xff0c;数学建模也需要用到算法&#xff0c;但是不是主要以编程形式展示&#xff0c;而是…

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计

堆垛机HMI屏幕功能概况 在自动化立体仓库堆垛机的HMI屏幕程序里,有着施耐德HMIGXU系列Vijeo Designer功能设计。此HMI程序运用标准的工程组织结构,凭借拖拽方式迅速构建人机交互界面。 其主要功能涵盖:设备参数、设备状态、手动/自动操作控制、报警显示、IO信息监控等模块…

实验- 分片上传 VS 直接上传

分片上传和直接上传是两种常见的文件上传方式。分片上传将文件分成多个小块&#xff0c;每次上传一个小块&#xff0c;可以并行处理多个分片&#xff0c;适用于大文件上传&#xff0c;减少了单个请求的大小&#xff0c;能有效避免因网络波动或上传中断导致的失败&#xff0c;并…

生活中的可靠性小案例12:类肤材质老化发粘问题

我一直觉得我买的某品牌车载吸尘器很好用&#xff0c;用了几年&#xff0c;目前性能也是杠杠的。然而它现在有个最大的问题&#xff0c;就是表面发粘了&#xff0c;用起来粘手&#xff0c;非常不舒服。 这一类问题在生活中不少见&#xff0c;尤其是一些用了类肤材质涂层的物件。…

qt 自带虚拟键盘的编译使用记录

一、windows 下编译 使用vs 命令窗口&#xff0c;分别执行&#xff1a; qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译&#xff0c;则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …

python中print函数的flush如何使用

在 Python 中&#xff0c;print 函数的 flush 参数是一个布尔值&#xff0c;默认值为 False。当设置为 True 时&#xff0c;它会强制将输出缓冲区的内容立即刷新到目标设备&#xff08;通常是控制台&#xff09;&#xff0c;而不是等待缓冲区满或者程序结束时才输出。 要注意fl…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…

websocket学习手册及python实现简单的聊天室

概述 WebSocket 是一种网络通信协议&#xff0c;允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接&#xff0c;实现了实时的数据传输。HTTP 协议有一个很大的缺点&#xff0c;通信只能由客户端发起&#xff0c;服务器返回响应后连接就会关闭&#xf…

SpringMVC (二)请求处理

目录 章节简介 一 请求处理&#xff08;初级&#xff09; eg:请求头 二 请求处理&#xff08;进阶&#xff09; eg:请求体 三 获取请求头 四 获取Cookie 五 级联封装 六 使用RequestBoby封装JSON对象 七 文件的上传 八 获取整个请求 HttpEntity 九 原生请求 Spring…

1.6、Java继承、构造方法、数组

子类可以增加字段、增加方法或覆盖父类方法&#xff0c;但继承不会删除任何字段和方法不恰当认为super 同 this 引用是类似的概念&#xff0c;其实super不是一个对象的引用&#xff0c;不能将值super赋给另一个对象变量&#xff0c;super只是一个指示 编译器调用父类方法的特殊…

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 引言&#xff1a;AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代&#xff0c;人工智能生成内容&…

专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...

原文链接&#xff1a;https://tecdat.cn/?p41020 本专题合集系统梳理了贝叶斯方法在金融数据分析与分类建模中的前沿应用。合集聚焦于PyMC3概率编程框架&#xff0c;深度探讨了共轭先验参数更新、贝叶斯逻辑回归、贝叶斯夏普比率等核心算法在实际场景中的落地实践&#xff08;…

Linux调度器 --- 负载均衡的存在的问题

文章目录 前言一、简介二、Linux 调度器2.1 在单核系统上&#xff0c;CFS 非常简单2.2 在多核系统上&#xff0c;CFS 变得非常复杂2.2.1 负载均衡算法2.2.2 优化措施 三、Linux调度器负载均衡的存在的问题3.1 组负载不均衡问题&#xff08;Group Imbalance Bug&#xff09;3.2 …

从零开始用AI开发游戏(三)背景故事

《迷域回响》背景故事 第一章&#xff1a;失落的符文纪元 在远古的“艾瑟兰”大陆&#xff0c;掌握空间魔法的「筑界者文明」曾建造了连通万界的回响迷宫——这座迷宫既是试炼场&#xff0c;也是囚笼。文明巅峰时期&#xff0c;筑界者将禁忌知识刻入虚空符文&#xff0c;嵌于…

IXTUR气控永磁铁:以高精度气控和稳定磁场,为机器人应用提供稳定抓取力

在现代工业生产和物流领域&#xff0c;物料的抓取与搬运是影响生产效率和成本控制的重要环节。传统夹爪在面对不同材质、形状和重量的物体时&#xff0c;常常存在适应性差、抓取不稳定、操作复杂等问题&#xff0c;导致生产流程中频繁出现停机调整&#xff0c;增加了人工干预成…

硬件驱动——51单片机:寄存器、LED、动态数码管

目录 一、51单片机 1.寄存器 二、LED点灯 1.原理 2.封装函数 3.顺序点灯 4.特定位点灯 三、动态数码管 1.原理 2.封装函数 3.0~9跳变 4.顺序移位0~9跳变 一、51单片机 1.寄存器 51单片机共40个引脚&#xff0c;其中P0,P1,P2,P3是四个有8引脚的寄存器&#xff0…

2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会

自 2023 年首届香港 Web3 嘉年华成功举办以来&#xff0c;这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日&#xff0c;第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…

【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中&#xff0c;我们已经学过了多表查询的一种&#xff1a;联合查询&#xff08;union&#xff09;。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先&#xff0c;我们想要查询emp表和stu表两个表&#xff0c;按照我们之前的知识栈&#xff0c;我们直接使用…

Leetcode-132.Palindrome Partitioning II [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-132.Palindrome Partitioning IIhttps://leetcode.com/problems/palindrome-partitioning-ii/description/132. 分割回文串 II - 力扣&#xff08;LeetCode&#xff09;132. 分割回文串 II - 给你一个字符串 s&…