diff src/tools/animation.html @ 0:8f4df159f06b

start public repo
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 20:57:49 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/animation.html	Fri Jul 11 20:57:49 2025 -0600
@@ -0,0 +1,349 @@
+<!doctype html>
+<html lang="en">
+	<head>
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<script>
+			function resized() {
+				let imgs = document.querySelectorAll('img[rect]');
+				for( let img of imgs ) {
+					img.style['border-radius'] = 0.3 * img.width + 'px';
+				}
+			}
+			function loaded() {
+				resized();
+				let imgs = document.querySelectorAll('img');
+				for( let img of imgs ) {
+					img.style.visibility = 'visible';
+					img.style['animation-play-state'] = 'running';
+				}
+			}
+		</script>
+		<style>
+			body {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				height: 100vh;
+				margin: 0;
+			}
+			div {
+				width: 90%;
+				aspect-ratio: 950 / 535;
+				background-color: rgb(138, 127, 210);
+				position: relative;
+			}
+			div:hover img {
+				animation-play-state: paused;
+			}
+			img {
+				position: absolute;
+				top: 50%;
+				left: 50%;
+				transform: translate(-50%,-50%);
+				animation-duration: 7s;
+				animation-iteration-count: infinite;
+				box-shadow: 5px 5px 20px 1px rgba(0,0,0,0.5);
+				visibility: hidden;
+				animation-play-state: paused;
+			}
+			img[circle] {
+				border-radius: 50%;
+			}
+			img[bio] {
+				animation-name: bio;
+				width: 12%;
+			}
+			@keyframes bio {
+				0% {
+					opacity: 0;
+					transform: translate(-50%,-50%) scale(1);
+				}
+				15% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(1.4375);
+				}
+				20%, 50% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(1);
+				}
+				60% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(1.1875);
+				}
+				65% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(0.875);
+				}
+				70% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(1.1875);
+				}
+				75% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(0.875);
+				}
+				80%, 100% {
+					opacity: 1;
+					transform: translate(-50%,-50%) scale(1);
+				}
+			}
+			img[i1] {
+				animation-name: i1;
+				width: 14%;
+			}
+			@keyframes i1 {
+				0%, 28% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				38% {
+					opacity: 0.1;
+				}
+				48%, 78% {
+					opacity: 1;
+					top: 61%;
+					left: 89%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[i2] {
+				animation-name: i2;
+				width: 17%;
+			}
+			@keyframes i2 {
+				0%, 30% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				40% {
+					opacity: 0.1;
+				}
+				50%, 80% {
+					opacity: 1;
+					top: 74%;
+					left: 69%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[i3] {
+				animation-name: i3;
+				width: 15%;
+			}
+			@keyframes i3 {
+				0%, 26% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				36% {
+					opacity: 0.1;
+				}
+				46%, 76% {
+					opacity: 1;
+					top: 25%;
+					left: 75%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[i4] {
+				animation-name: i4;
+				width: 13%;
+			}
+			@keyframes i4 {
+				0%, 20% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				30% {
+					opacity: 0.1;
+				}
+				40%, 70% {
+					opacity: 1;
+					top: 76%;
+					left: 32%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[i5] {
+				animation-name: i5;
+				width: 16%;
+			}
+			@keyframes i5 {
+				0%, 22% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				32% {
+					opacity: 0.1;
+				}
+				42%, 72% {
+					opacity: 1;
+					top: 56%;
+					left: 12%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[i6] {
+				animation-name: i6;
+				width: 14%;
+			}
+			@keyframes i6 {
+				0%, 24% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				24% {
+					opacity: 0.1;
+				}
+				44%, 74% {
+					opacity: 1;
+					top: 20%;
+					left: 26%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[ins] {
+				animation-name: ins;
+				width: 7%;
+			}
+			@keyframes ins {
+				0%, 30% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				40% {
+					opacity: 0.1;
+				}
+				50%, 80% {
+					opacity: 1;
+					top: 25%;
+					left: 58%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[tk] {
+				animation-name: tk;
+				width: 7%;
+			}
+			@keyframes tk {
+				0%, 32% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				42% {
+					opacity: 0.1;
+				}
+				52%, 82% {
+					opacity: 1;
+					top: 45%;
+					left: 35%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+			img[yt] {
+				animation-name: yt;
+				width: 7%;
+			}
+			@keyframes yt {
+				0%, 34% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+				44% {
+					opacity: 0.1;
+				}
+				54%, 84% {
+					opacity: 1;
+					top: 23%;
+					left: 43%;
+				}
+				85% {
+					opacity: 0.1;
+				}
+				90%, 100% {
+					opacity: 0;
+					top: 50%;
+					left: 50%;
+				}
+			}
+		</style>
+	</head>
+	<body onload="loaded()" onresize="resized()">
+		<div>
+			<img bio rect src="https://test.linkmy.style/images/home/bio.png">
+			<img i1 rect src="https://test.linkmy.style/images/home/i1.png">
+			<img i2 rect src="https://test.linkmy.style/images/home/i2.png">
+			<img i3 rect src="https://test.linkmy.style/images/home/i3.png">
+			<img i4 rect src="https://test.linkmy.style/images/home/i4.png">
+			<img i5 rect src="https://test.linkmy.style/images/home/i5.png">
+			<img i6 rect src="https://test.linkmy.style/images/home/i6.png">
+			<img ins circle src="https://test.linkmy.style/images/home/ins.png">
+			<img tk circle src="https://test.linkmy.style/images/home/tk.png">
+			<img yt circle src="https://test.linkmy.style/images/home/yt.png">
+		</div>
+	</body>
+</html>