html写流星雨(完整代码)

码仙励志

人生不可能总是顺心如意,但持续朝着阳光走,影子就会躲在后面,刺眼,却是对的方向

<!doctype html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>流星雨</title>
		<meta name="keywords" content="关键词,关键字">
		<meta name="description" content="描述信息">
		<style>
			body {
				margin: 0;
				overflow: hidden;
			}
		</style>
	</head>

	<body>

		<!--
			<canvas>画布 画板 画画的本子
		-->
		<canvas width=400 height=400 style="background:#000000;" id="canvas"></canvas>

		<!--
			javascript
			画笔
		--> 
		<script>
					
			//获取画板
			//doccument 当前文档
			//getElement 获取一个标签
			//ById 通过Id名称的方式
			//var 声明一片空间
			//var canvas 声明一片空间的名字叫做canvas
			var canvas = document.getElementById("canvas");
			//获取画板权限 上下文
			var ctx = canvas.getContext("2d");
			//让画板的大小等于屏幕的大小
			/*
				思路:
					1.获取屏幕对象
					2.获取屏幕的尺寸
					3.屏幕的尺寸赋值给画板
			*/
			//获取屏幕对象
			var s = window.screen;
			//获取屏幕的宽度和高度
			var w = s.width;
			var h = s.height;
			//设置画板的大小
			canvas.width = w;
			canvas.height = h;

			//设置文字大小 
			var fontSize = 14;
			//计算一行有多少个文字 取整数 向下取整
			var clos = Math.floor(w/fontSize);
			//思考每一个字的坐标
			//创建数组把clos 个 0 (y坐标存储起来)
			var drops = [];
			var str = "qwertyuiopasdfghjklzxcvbnm";
			//往数组里面添加 clos 个 0
			for(var i = 0;i<clos;i++) {
				drops.push(0);
			}

			//绘制文字
			function drawString() {
				//给矩形设置填充色
				ctx.fillStyle="rgba(0,0,0,0.05)"
				//绘制一个矩形
				ctx.fillRect(0,0,w,h);

				//添加文字样式
				ctx.font = "600 "+fontSize+"px 微软雅黑";
				//设置文字颜色
				ctx.fillStyle = "#00ff00";

				for(var i = 0;i<clos;i++) {
					//x坐标
					var x = i*fontSize;
					//y坐标
					var y = drops[i]*fontSize;
					//设置绘制文字
					ctx.fillText(str[Math.floor(Math.random()*str.length)],x,y);
					if(y>h&&Math.random()>0.99){
						drops[i] = 0;
					}
					drops[i]++;
				}
					
			}
			//定义一个定时器,每隔30毫秒执行一次
			setInterval(drawString,30);
		</script>
	</body>
</html>

运行效果截图:

有很多人都给我留言说写不出来,最后经过我的排查都是抄代码抄错了,所以我这里给大家一个直接下载的地址,微信搜索公众号码海无际或扫描左侧二维码回复c024获取

本篇博客来自于潭州教育视频教程的总结以及笔记的整理,仅供学习交流,切勿用于商业用途,如有侵权,请联系博主删除,博主QQ:194760901 

  • 261
    点赞
  • 1099
    收藏
    觉得还不错? 一键收藏
  • 136
    评论
<h3>回答1:</h3><br/>以下是完整的HTML代码,可以实现流星雨的效果。 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>流星雨效果</title> <style> body { margin: 0; padding: 0; background-color: #000; } .starfield { position: absolute; width: 100%; height: 100%; background-image: url('http://i.imgur.com/OWywwQ2.png'); background-repeat: repeat; z-index: -1; } .meteor { position: absolute; opacity: 0; z-index: 2; animation: meteor-fall 5s linear infinite; } @keyframes meteor-fall { 0% { opacity: 1; transform: translate(-50%, -500%); } 50% { opacity: 1; transform: translate(50%, 500%); } 100% { opacity: 0; transform: translate(200%, 800%); } } </style> </head> <body> <div class="starfield"></div> <img class="meteor" src="http://i.imgur.com/1kMuu8W.png" width="50"> <img class="meteor" src="http://i.imgur.com/1kMuu8W.png" width="70"> <img class="meteor" src="http://i.imgur.com/vvx75VM.png" width="40"> <img class="meteor" src="http://i.imgur.com/EJDUKwg.png" width="60"> <img class="meteor" src="http://i.imgur.com/5zd5f05.png" width="80"> </body> </html> ``` 其中,`.starfield` 类定义了背景星空的样式,使用了一个背景图片,可以将其换成自己的星空图片。 每一颗流星都用一个 `<img>` 标签表示,具体的图片地址可以换成自己的。 `.meteor` 类定义了动画效果,使用了 CSS3 的 `animation` 属性,实现了从上往下落的动画效果。具体的动画参数可以根据需要进行调整。 在 HTML 中,通过将星空和流星都设置为绝对定位(`position: absolute;`)来达到它们的定位效果。 通过以上代码,即可实现流星雨的效果。 <h3>回答2:</h3><br/>HTML是一种标记语言,可以用它来实现各种效果,包括流星雨。下面提供一个完整的HTML代码,以实现这一效果。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>流星雨</title> <style> body { background-color: black; } .meteor { position: fixed; width: 2px; height: 20px; background-color: white; opacity: 0; -webkit-animation-name: meteor; -webkit-animation-duration: 1s; -webkit-animation-delay: 0s; -webkit-animation-timing-function: linear; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: normal; } @-webkit-keyframes meteor { 0% { opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { opacity: 0; } } </style> </head> <body> <script> var w = window.innerWidth; var h = window.innerHeight; var starDensity = 0.1; // 流星密度 var meteorSpeed = 3; // 流星速度 setInterval(function() { if (Math.random() < starDensity) { var x = Math.random() * w; var y = -20; var m = document.createElement("div"); m.classList.add("meteor"); m.style.left = x + "px"; m.style.top = y + "px"; document.body.appendChild(m); setTimeout(function() { m.remove(); }, 1000); } }, 50); var meteors = document.querySelectorAll(".meteor"); for (var i = 0; i < meteors.length; i++) { var x = meteors[i].offsetLeft; var y = meteors[i].offsetTop; meteors[i].style.transform = "rotate(45deg)"; meteors[i].style.webkitTransform = "rotate(45deg)"; var distance = Math.sqrt(Math.pow(x, 2) + Math.pow(h-y, 2)); var timeTaken = distance / meteorSpeed; meteors[i].style.webkitAnimationDuration = timeTaken + "s"; } </script> </body> </html> 这个代码包含两部分,一部分是CSS部分,用来定义流星的样式和动画;另一部分是JavaScript部分,用来实现流星的生成和动画控制。 在CSS部分,我们定义了两个样式,一个是body的样式,用来定义页面背景色;另一个是.meteor的样式,用来定义流星的样式和动画。其中opacity为0表示流星不可见,动画的关键帧中通过改变opacity值来模拟流星的闪烁效果。 在JavaScript部分,我们首先获取了浏览器的窗口宽度和高度,以便在随机位置生成流星。setInterval函数定时执行生成流星的代码,它的时间间隔为50毫秒,密度由starDensity控制。每次生成流星时,我们先随机生成x和y坐标,然后创建一个div元素,并添加meteor类样式,最后将其添加到页面中。setTimeout函数用来控制流星的持续时间,这里设置为1秒。 流星的动画是通过CSS中定义的动画实现的,我们需要动态设置动画的持续时间(timeTaken),以控制流星的速度,速度由meteorSpeed控制。首先用document.querySelectorAll获取所有流星元素,然后循环遍历每个元素,计算出流星到达页面底部的时间,最后通过webkitAnimationDuration属性设置为改时间。由于流星是倾斜的,所以也需要设置transform属性。 通过这个完整的HTML代码,我们就可以实现一个简单的流星雨效果。 <h3>回答3:</h3><br/>HTML是网页编程的基础,它不仅可以呈现文字和图片,还可以通过编特定的代码来实现动态效果,比如流星雨效果。下面是实现流星雨效果的HTML代码: <!DOCTYPE html> <html> <head> <title>流星雨</title> <meta charset="utf-8"> <style type="text/css"> .stars_box{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; } .stars{ position: absolute; background-image: url(./star.png); background-repeat: no-repeat; background-size: contain; animation: stars 5s linear infinite; } .meteor { position: absolute; top: -50px; background-image: url(./meteor.png); background-repeat: no-repeat; background-size: contain; animation: meteor 1.5s linear infinite; } @keyframes stars{ from{background-position: 0 0;} to{background-position: 0 -300px;} } @keyframes meteor{ from{top: -50px; transform: rotate(0deg);} to{top: 100%; transform:rotate(360deg);} } </style> </head> <body> <div class="stars_box"> <div class="stars"></div> </div> <div class="meteor"></div> </body> </html> 代码解析:代码用到了CSS3中的动画特性和HTML中的布局特性。其中div元素类名为stars_box作为流星雨背景的容器,再通过stars类名为容器添加星星雨动画。而流星则作为meteor类名的div元素直接显示于页面上。需要注意一点,代码中的star.png以及meteor.png是需配合使用的图片资源,这里先生成一张白色背景透明度的小图片作为参考图片。代码中设置了定位,图片大小和透明度相关的样式,同时为容器和元素定义了星星雨和流星动画,实现了流星雨的效果。 需要注意几点: 1.图片资源的准备 2.样式表的编,格式编。都会影响到效果的呈现。 3.不同的需求和设备大小的设置,需要对CSS进行比较精确的编。 通过以上的代码解析,您可以理解如何在HTML中编简单的流星雨效果,利用CSS动画实现动态效果。但需要注意合理运用并精心调试。
评论 136
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值