前端系列【仅供参考】:html动态爱心代码【附源码】




html动态爱心代码【附源码】

来,大家先看图片(时间都是会动的)

在这里插入图片描述

是不是很美啊

话不多说,上代码

顺计时

<head>
	
		<meta charset="utf-8">
	
		<title>快乐</title>
	
		<style>
			body {
	
				overflow: hidden;
	
				margin: 0;
	
			}
	
			h1 {
	
				position: fixed;
	
				top: 30%;
	
				left: 0;
	
				width: 100%;
	
				text-align: center;
	
				transform: translateY(-50%);
	
				font-family: 'Love Ya Like A Sister', cursive;
	
				font-size: 60px;
	
				color: ff64d9;
	
				padding: 0 20px;
	
			}
	
			h1 span {
	
				position: fixed;
	
				left: 0;
	
				width: 100%;
	
				text-align: center;
	
				margin-top: 30px;
	
				font-size: 40px;
	
			}
		</style>
	
	</head>
	
	<body>
	
		<h1 id="h1"></h1>
	
		<canvas></canvas>
	
		<script>
			var canvas = document.querySelector("canvas"),
	
				ctx = canvas.getContext("2d");
	
			var ww, wh;
	
			function onResize() {
	
				ww = canvas.width = window.innerWidth;
	
				wh = canvas.height = window.innerHeight;
	
			}
	
			ctx.strokeStyle = "red";
	
			ctx.shadowBlur = 25;
	
			ctx.shadowColor = "hsla(0, 100%, 60%,0.5)";
	
			var precision = 100;
	
			var hearts = [];
	
			var mouseMoved = false;
	
			function onMove(e) {
	
				mouseMoved = true;
	
				if (e.type === "tm") {
	
					hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
	
					hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
	
				} else {
	
					hearts.push(new Heart(e.clientX, e.clientY));
	
					hearts.push(new Heart(e.clientX, e.clientY));
	
				}
	
			}
	
			var Heart = function(x, y) {
	
				this.x = x || Math.random() * ww;
	
				this.y = y || Math.random() * wh;
	
				this.size = Math.random() * 2 + 1;
	
				this.shadowBlur = Math.random() * 10;
	
				this.speedX = (Math.random() + 0.2 - 0.6) * 8;
	
				this.speedY = (Math.random() + 0.2 - 0.6) * 8;
	
				this.speedSize = Math.random() * 0.05 + 0.01;
	
				this.opacity = 1;
	
				this.vertices = [];
	
				for (var i = 0; i < precision; i++) {
	
					var step = (i / precision - 0.5) * (Math.PI * 2);
	
					var vector = {
	
						x: (15 * Math.pow(Math.sin(step), 3)),
	
						y: -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step))
	
					}
	
					this.vertices.push(vector);
	
				}
	
			}
	
			Heart.prototype.draw = function() {
	
				this.size -= this.speedSize;
	
				this.x += this.speedX;
	
				this.y += this.speedY;
	
				ctx.save();
	
				ctx.translate(-1000, this.y);
	
				ctx.scale(this.size, this.size);
	
				ctx.beginPath();
	
				for (var i = 0; i < precision; i++) {
	
					var vector = this.vertices[i];
	
					ctx.lineTo(vector.x, vector.y);
	
				}
	
				ctx.globalAlpha = this.size;
	
				ctx.shadowBlur = Math.round((3 - this.size) * 10);
	
				ctx.shadowColor = "hsla(0, 100%, 60%,0.5)";
	
				ctx.shadowOffsetX = this.x + 1000;
	
				ctx.globalCompositeOperation = "screen"
	
				ctx.closePath();
	
				ctx.fill()
	
				ctx.restore();
	
			};
	
			function render(a) {
	
				requestAnimationFrame(render);
	
				hearts.push(new Heart())
	
				ctx.clearRect(0, 0, ww, wh);
	
				for (var i = 0; i < hearts.length; i++) {
	
					hearts[i].draw();
	
					if (hearts[i].size <= 0) {
	
						hearts.splice(i, 1);
	
						i--;
	
					}
	
				}
	
			}
	
			onResize();
	
			window.addEventListener("mmo", onMove);
	
			window.addEventListener("tm", onMove);
	
			window.addEventListener("resize", onResize);
	
			requestAnimationFrame(render);
	
			window.onload = function starttime() {
	
				time(h1, '2023,03,08'); // 2023年女神节时间+1
	
				ptimer = setTimeout(starttime, 1000); // 添加计时器
	
			}
	
			function time(obj, futimg) {
	
				var nowtime = new Date().getTime(); // 现在时间转换为时间戳
	
				var futruetime = new Date(futimg).getTime(); // 未来时间转换为时间戳
	
				var msec = nowtime - futruetime; // 毫秒 现在时间-未来时间
	
				var time = (msec / 1000); // 毫秒/1000
	
				var day = parseInt(time / 86400); //24*60*60*1000
	
				var hour = parseInt(time / 3600) - 24 * day; // 小时 60*60 总小时数-过去的小时数=现在的小时数
	
				var minute = parseInt(time % 3600 / 60); //-(day*24)60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
	
				var second = parseInt(time % 60); //60秒为一整份 取余 剩下秒数
				var mz = second<10?'0'+second:second;
				var fz = minute<10?'0'+minute:minute;
				obj.innerHTML = "<b><br>每天快乐:<br></b>" + hour + ":" + fz + ":" + mz +
					"<br><span>愿东哥<br>平安喜乐<br>万事顺遂</span>"
					
				return true;
			}
		</script>
	
	</body>

倒计时

<head>
 
	<meta charset="utf-8">
 
	<title>未来</title>
 
	<style>
		body {
 
			overflow: hidden;
 
			margin: 0;
 
		}
 
		h1 {
 
			position: fixed;
 
			top: 30%;
 
			left: 0;
 
			width: 100%;
 
			text-align: center;
 
			transform: translateY(-50%);
 
			font-family: 'Love Ya Like A Sister', cursive;
 
			font-size: 60px;
 
			color: ff64d9;
 
			padding: 0 20px;
 
		}
 
		h1 span {
 
			position: fixed;
 
			left: 0;
 
			width: 100%;
 
			text-align: center;
 
			margin-top: 30px;
 
			font-size: 40px;
 
		}
	</style>
 
</head>
 
<body>
 
	<h1 id="h1"></h1>
 
	<canvas></canvas>
 
	<script>
		var canvas = document.querySelector("canvas"),
 
			ctx = canvas.getContext("2d");
 
		var ww, wh;
 
		function onResize() {
 
			ww = canvas.width = window.innerWidth;
 
			wh = canvas.height = window.innerHeight;
 
		}
 
		ctx.strokeStyle = "red";
 
		ctx.shadowBlur = 25;
 
		ctx.shadowColor = "hsla(0, 100%, 60%,0.5)";
 
		var precision = 100;
 
		var hearts = [];
 
		var mouseMoved = false;
 
		function onMove(e) {
 
			mouseMoved = true;
 
			if (e.type === "touchmove") {
 
				hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
 
				hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
 
			} else {
 
				hearts.push(new Heart(e.clientX, e.clientY));
 
				hearts.push(new Heart(e.clientX, e.clientY));
 
			}
 
		}
 
		var Heart = function(x, y) {
 
			this.x = x || Math.random() * ww;
 
			this.y = y || Math.random() * wh;
 
			this.size = Math.random() * 2 + 1;
 
			this.shadowBlur = Math.random() * 10;
 
			this.speedX = (Math.random() + 0.2 - 0.6) * 8;
 
			this.speedY = (Math.random() + 0.2 - 0.6) * 8;
 
			this.speedSize = Math.random() * 0.05 + 0.01;
 
			this.opacity = 1;
 
			this.vertices = [];
 
			for (var i = 0; i < precision; i++) {
 
				var step = (i / precision - 0.5) * (Math.PI * 2);
 
				var vector = {
 
					x: (15 * Math.pow(Math.sin(step), 3)),
 
					y: -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step))
 
				}
 
				this.vertices.push(vector);
 
			}
 
		}
 
		Heart.prototype.draw = function() {
 
			this.size -= this.speedSize;
 
			this.x += this.speedX;
 
			this.y += this.speedY;
 
			ctx.save();
 
			ctx.translate(-1000, this.y);
 
			ctx.scale(this.size, this.size);
 
			ctx.beginPath();
 
			for (var i = 0; i < precision; i++) {
 
				var vector = this.vertices[i];
 
				ctx.lineTo(vector.x, vector.y);
 
			}
 
			ctx.globalAlpha = this.size;
 
			ctx.shadowBlur = Math.round((3 - this.size) * 10);
 
			ctx.shadowColor = "hsla(140, 66%, 66%, 255)";
 
			ctx.shadowOffsetX = this.x + 1000;
 
			ctx.globalCompositeOperation = "screen"
 
			ctx.closePath();
 
			ctx.fill()
 
			ctx.restore();
 
		};
 
		function render(a) {
 
			requestAnimationFrame(render);
 
			hearts.push(new Heart())
 
			ctx.clearRect(0, 0, ww, wh);
 
			for (var i = 0; i < hearts.length; i++) {
 
				hearts[i].draw();
 
				if (hearts[i].size <= 0) {
 
					hearts.splice(i, 1);
 
					i--;
 
				}
 
			}
 
		}
 
		onResize();
 
		window.addEventListener("mousemove", onMove);
 
		window.addEventListener("touchmove", onMove);
 
		window.addEventListener("resize", onResize);
 
		requestAnimationFrame(render);
 
		window.onload = function starttime() {
 
			time(h1, '2024,1,1'); // 202311日
 
			ptimer = setTimeout(starttime, 1000); // 添加计时器
 
		}
 
		function time(obj, futimg) {
 
			var nowtime = new Date().getTime(); // 现在时间转换为时间戳
 
			var futruetime = new Date(futimg).getTime(); // 未来时间转换为时间戳
 
			var msec = futruetime - nowtime; // 毫秒 未来时间-现在时间
 
			var time = (msec / 1000); // 毫秒/1000
 
			var day = parseInt(time / 86400); //24*60*60*1000
 
			var hour = parseInt(time / 3600) - 24 * day; // 小时 60*60 总小时数-过去的小时数=现在的小时数
 
			var minute = parseInt(time % 3600 / 60); //-(day*24)60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
 
			var second = parseInt(time % 60); //60秒为一整份 取余 剩下秒数
 
			obj.innerHTML = "<br>距2024年还有:<br>" + day + "天" + hour + "小时" + minute + "分" + second + "秒" +
				"<br><span>愿在明年来临前<br>大家将迎来新的蜕变</span>"
 
			return true;
 
		}
	</script>
 
</body>

在这里插入图片描述

祝大家在情场顺风顺水 !!

在这里插入图片描述







孤留光乩

html动态爱心代码【附源码】

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

坦笑&&life

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

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

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

打赏作者

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

抵扣说明:

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

余额充值