首页 前端知识 HTML创意动画代码

HTML创意动画代码

2024-01-25 10:01:57 前端知识 前端哥 562 309 我要收藏

目录

    • 1、动态气泡背景
    • 2、创意文字
    • 3、旋转立方体

1、动态气泡背景

请添加图片描述

<!DOCTYPE html>
<html>
<head>
	<title>Bubble Background</title>
	<style>
		body {
			margin: 0;
			padding: 0;
			height: 100vh;
			background: #222;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			overflow: hidden;
		}

		canvas {
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
		}

		h1 {
			color: white;
			font-size: 4rem;
			z-index: 1;
		}
	</style>
</head>
<body>
	<canvas id="canvas"></canvas>
	<h1>Hello Boy!</h1>
	<script>
		const canvas = document.getElementById("canvas");
		const ctx = canvas.getContext("2d");

		canvas.width = window.innerWidth;
		canvas.height = window.innerHeight;

		class Bubble {
			constructor(x, y, radius, color) {
				this.x = x;
				this.y = y;
				this.radius = radius;
				this.color = color;
				this.dx = Math.random() - 0.5;
				this.dy = Math.random() - 0.5;
				this.speed = Math.random() * 5 + 1;
			}

			draw() {
				ctx.beginPath();
				ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
				ctx.fillStyle = this.color;
				ctx.fill();
			}

			update() {
				if (this.x + this.radius > canvas.width || this.x - this.radius < 0) {
					this.dx = -this.dx;
				}
				if (this.y + this.radius > canvas.height || this.y - this.radius < 0) {
					this.dy = -this.dy;
				}
				this.x += this.dx * this.speed;
				this.y += this.dy * this.speed;
			}
		}

		const bubbles = [];

		function init() {
			for (let i = 0; i < 50; i++) {
				const radius = Math.random() * 50 + 10;
				const x = Math.random() * (canvas.width - radius * 2) + radius;
				const y = Math.random() * (canvas.height - radius * 2) + radius;
				const color = `hsla(${Math.random() * 360}, 100%, 50%, 0.8)`;
				bubbles.push(new Bubble(x, y, radius, color));
			}
		}

		function animate() {
			requestAnimationFrame(animate);
			ctx.clearRect(0, 0, canvas.width, canvas.height);
			bubbles.forEach((bubble) => {
				bubble.draw();
				bubble.update();
			});
		}

		init();
		animate();
	</script>
</body>
</html>

这个代码使用了 Canvas 技术,创建了一个随机生成的气泡背景并且让气泡动态漂浮,形成了一个很有趣的效果。你可以在这个基础上尝试进行一些自己的创意,比如修改气泡的数量、大小、颜色,以及运动的方式等等。

2、创意文字

请添加图片描述

<!DOCTYPE html>
<html>
<head>
	<title>Rainbow Text</title>
	<style>
		body {
			background: black;
			color: white;
			font-family: 'Open Sans', sans-serif;
			text-align: center;
			height: 100%;
			display: flex;
			flex-direction: column;
			justify-content: center;
		}
		
		h1 {
			font-size: 8em;
			margin: 100px auto;
			animation: rainbow 5s ease-in-out infinite;
		}
		
		@keyframes rainbow {
			0% {
				color: #ff0000;
				text-shadow: 0 0 10px #ff0000, 0 0 20px #ff0000, 0 0 30px #ff0000;
			}
			25% {
				color: #ff8000;
				text-shadow: 0 0 10px #ff8000, 0 0 20px #ff8000, 0 0 30px #ff8000;
			}
			50% {
				color: #ffff00;
				text-shadow: 0 0 10px #ffff00, 0 0 20px #ffff00, 0 0 30px #ffff00;
			}
			75% {
				color: #00ff00;
				text-shadow: 0 0 10px #00ff00, 0 0 20px #00ff00, 0 0 30px #00ff00;
			}
			100% {
				color: #0000ff;
				text-shadow: 0 0 10px #0000ff, 0 0 20px #0000ff, 0 0 30px #0000ff;
			}
		}
	</style>
</head>
<body>
	<h1>Hello Girl</h1>
</body>
</html>

这个代码使用了 CSS 的动画和阴影特效,让页面中的文字在红、橙、黄、绿、蓝五种颜色之间不断变化,形成了一个很有趣的效果。你可以在这个基础上尝试进行一些自己的创意,比如修改文字的大小、样式、颜色,以及变化的频率和方式等等。

3、旋转立方体

请添加图片描述

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>旋转立方体</title>
    <style>
      #cube {
        width: 200px;
        height: 200px;
        position: relative;
        transform-style: preserve-3d;
        animation: rotate 6s infinite linear;
		margin: 100px auto;
      }
      
      #cube div {
        position: absolute;
        width: 200px;
        height: 200px;
        background-color: rgba(0, 255, 255, 0.5);
        border: 2px solid #333;
      }
      
      #cube .front {
        transform: translateZ(100px);
      }
      
      #cube .back {
        transform: rotateY(180deg) translateZ(100px);
      }
      
      #cube .right {
        transform: rotateY(90deg) translateZ(100px);
      }
      
      #cube .left {
        transform: rotateY(-90deg) translateZ(100px);
      }
      
      #cube .top {
        transform: rotateX(90deg) translateZ(100px);
      }
      
      #cube .bottom {
        transform: rotateX(-90deg) translateZ(100px);
      }
      
      @keyframes rotate {
        0% {
          transform: rotateX(0) rotateY(0) rotateZ(0);
        }
        100% {
          transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);
        }
      }
    </style>
  </head>
  <body>
    <div id="cube">
      <div class="front"></div>
      <div class="back"></div>
      <div class="right"></div>
      <div class="left"></div>
      <div class="top"></div>
      <div class="bottom"></div>
    </div>
    <script>
      const cube = document.querySelector('#cube');
      let isPaused = false;
      
      cube.addEventListener('mouseover', () => {
        isPaused = true;
        cube.style.animationPlayState = 'paused';
      });
      
      cube.addEventListener('mouseout', () => {
        isPaused = false;
        cube.style.animationPlayState = 'running';
      });
      
      setInterval(() => {
        if (!isPaused) {
          cube.style.animationPlayState = 'running';
        }
      }, 1000);
    </script>
  </body>
</html>

该示例中,我们使用了 transform-style: preserve-3d 属性来创建 3D 空间通过对立方体不同面的旋转实现了立方体的旋转效果。我们还使用了 CSS 动来实现无限循环的旋转效果,并使用 JavaScript 实现了当鼠标悬停在立方体上时暂停动画的交互效果。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/297.html
标签
css3
评论
发布的文章

Ajax学习(3rd)

2024-02-04 11:02:39

jQuery之事件触发器trigger()

2024-02-04 11:02:02

数据可视化一、ECharts

2024-02-04 11:02:45

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!