html--雨滴

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <style>
  body {
	overflow: hidden;
	background: black;
}
  </style>
 </HEAD>

 <BODY>  
<canvas id="canvas-club"></canvas>
 <script>
  var c = document.getElementById("canvas-club");
var ctx = c.getContext("2d");
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;
var clearColor = 'rgba(0, 0, 0, .1)';
var max = 30;
var drops = [];

function random(min, max) {
    return Math.random() * (max - min) + min;
}

function O() {}

O.prototype = {
	init: function() {
		this.x = random(0, w);
		this.y = 0;
		this.color = 'hsl(180, 100%, 50%)';
		this.w = 2;
		this.h = 1;
		this.vy = random(4, 5);
		this.vw = 3;
		this.vh = 1;
		this.size = 2;
		this.hit = random(h * .8, h * .9);
		this.a = 1;
		this.va = .96;
	},
	draw: function() {
		if (this.y > this.hit) {
			ctx.beginPath();
			ctx.moveTo(this.x, this.y - this.h / 2);

			ctx.bezierCurveTo(
				this.x + this.w / 2, this.y - this.h / 2,
				this.x + this.w / 2, this.y + this.h / 2,
				this.x, this.y + this.h / 2);

			ctx.bezierCurveTo(
				this.x - this.w / 2, this.y + this.h / 2,
				this.x - this.w / 2, this.y - this.h / 2,
				this.x, this.y - this.h / 2);

			ctx.strokeStyle = 'hsla(180, 100%, 50%, '+this.a+')';
			ctx.stroke();
			ctx.closePath();
			
		} else {
			ctx.fillStyle = this.color;
			ctx.fillRect(this.x, this.y, this.size, this.size * 5);
		}
		this.update();
	},
	update: function() {
		if(this.y < this.hit){
			this.y += this.vy;
		} else {
			if(this.a > .03){
				this.w += this.vw;
				this.h += this.vh;
				if(this.w > 100){
					this.a *= this.va;
					this.vw *= .98;
					this.vh *= .98;
				}
			} else {
				this.init();
			}
		}
		
	}
}

function resize(){
	w = c.width = window.innerWidth;
	h = c.height = window.innerHeight;
}

function setup(){
	for(var i = 0; i < max; i++){
		(function(j){
			setTimeout(function(){
				var o = new O();
				o.init();
				drops.push(o);
			}, j * 200)
		}(i));
	}
}


function anim() {
	ctx.fillStyle = clearColor;
	ctx.fillRect(0,0,w,h);
	for(var i in drops){
		drops[i].draw();
	}
	requestAnimationFrame(anim);
}


window.addEventListener("resize", resize);

setup();
anim();
  </script>
 </BODY>
</HTML>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关推荐

  1. HTML

    2024-04-29 11:28:01       26 阅读
  2. <span style='color:red;'>HTML</span>

    HTML

    2024-04-29 11:28:01      17 阅读
  3. <span style='color:red;'>HTML</span>

    HTML

    2024-04-29 11:28:01      16 阅读
  4. HTML

    2024-04-29 11:28:01       9 阅读
  5. HTML

    2024-04-29 11:28:01       14 阅读
  6. CSS实现一个雨滴滑落效果

    2024-04-29 11:28:01       8 阅读
  7. 用PHP来模拟雨滴的动态效果

    2024-04-29 11:28:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 11:28:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 11:28:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 11:28:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 11:28:01       18 阅读

热门阅读

  1. Stable Diffusion Windows部署教程

    2024-04-29 11:28:01       15 阅读
  2. Linux连接不上Android设备

    2024-04-29 11:28:01       12 阅读
  3. 安卓手机APP开发__媒体开发部分__用户界面定制

    2024-04-29 11:28:01       12 阅读
  4. android:maxEms=“5“ 为什么可以显示6个文字呢?

    2024-04-29 11:28:01       6 阅读
  5. SpringMVC

    SpringMVC

    2024-04-29 11:28:01      11 阅读
  6. Android 11在app中修改屏幕亮度

    2024-04-29 11:28:01       11 阅读
  7. [SQL系列]从零开始学Clickhouse

    2024-04-29 11:28:01       11 阅读
  8. Docker-05 Docker容器命令

    2024-04-29 11:28:01       7 阅读
  9. C#三人飞行棋

    2024-04-29 11:28:01       8 阅读
  10. 用 Python 进行渗透测试

    2024-04-29 11:28:01       10 阅读
  11. 【K8s】工作以来遇到的K8s相关问题、故障

    2024-04-29 11:28:01       6 阅读
  12. 加密,解密 crypto-js、 计算哈希值,js-sha3

    2024-04-29 11:28:01       9 阅读