目录
- 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 实现了当鼠标悬停在立方体上时暂停动画的交互效果。