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>

二、结果展示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的HTML和CSS实现流星雨效果的示例代码: HTML: ``` <!DOCTYPE html> <html> <head> <title>流星雨效果</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> </body> </html> ``` CSS: ``` body { background-color: #000; } .star { position: absolute; width: 2px; height: 10px; background-color: #fff; box-shadow: 0 0 2px #fff; animation: shooting-star 1s ease-in-out infinite; } .star:nth-child(1) { top: 20%; left: 10%; animation-delay: 0.5s; } .star:nth-child(2) { top: 50%; left: 20%; animation-delay: 1.5s; } .star:nth-child(3) { top: 80%; left: 30%; animation-delay: 2.5s; } .star:nth-child(4) { top: 10%; left: 40%; animation-delay: 3.5s; } .star:nth-child(5) { top: 40%; left: 50%; animation-delay: 4.5s; } .star:nth-child(6) { top: 70%; left: 60%; animation-delay: 5.5s; } .star:nth-child(7) { top: 25%; left: 70%; animation-delay: 6.5s; } .star:nth-child(8) { top: 60%; left: 80%; animation-delay: 7.5s; } .star:nth-child(9) { top: 90%; left: 90%; animation-delay: 8.5s; } .star:nth-child(10) { top: 15%; left: 80%; animation-delay: 9.5s; } @keyframes shooting-star { 0% { transform: translateX(0) translateY(0); opacity: 1; } 100% { transform: translateX(500px) translateY(500px); opacity: 0; } } ``` 这段代码会在页面上生成10个星星元素,并使用CSS动画实现流星雨效果。每个星星都有不同的起始位置和延迟时间,使得它们看起来像是从不同的方向飞来。动画的关键帧使用transform属性在水平和垂直方向上移动星星元素,并在100%时将其透明度设置为0,使其消失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青枫浦上看桃花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值