生日快乐html网页炫酷
时间: 2023-12-09 19:35:10 浏览: 75
以下是一个生日快乐的HTML网页炫酷效果,包括文字粒子颗粒展示、倒计时、生日蛋糕和点击喜欢出现烟花等特效:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>生日快乐</title>
<style>
body {
background-color: #000;
color: #fff;
font-size: 50px;
text-align: center; margin-top: 200px;
}
canvas {
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
#cake {
display: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: cake 3s ease-in-out forwards;
}
@keyframes cake {
0% {
transform: translate(-50%, -50%) scale(0);
}
100% {
transform: translate(-50%, -50%) scale(1); }
}
#like {
display: none;
position: absolute; top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: like 1s ease-in-out forwards;
}
@keyframes like {
0% {
transform: translate(-50%, -50%) scale(0);
}
100% {
transform: translate(-50%, -50%) scale(1);
}
}
</style>
</head>
<body>
<div id="text"></div>
<canvas id="canvas"></canvas>
<div id="countdown"></div>
<img id="cake" src="https://i.imgur.com/5LZvzJN.png">
<img id="like" src="https://i.imgur.com/7bQvZJf.png">
<script>
// 文字粒子颗粒展示
var text = "生日快乐";
var particles = [];
var particleCount = 0;
var particleMax = 100;
var particleSpeed = 2;
var particleSize = 4;
var particleColor = "#fff";
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var canvasWidth = window.innerWidth;
var canvasHeight = window.innerHeight;
canvas.width = canvasWidth;
canvas.height = canvasHeight;
context.fillStyle = particleColor;
context.font = "bold " + (canvasHeight / 2) + "px sans-serif";
context.textAlign = "center";
context.textBaseline = "middle";
context.fillText(text, canvasWidth / 2, canvasHeight / 2);
var imageData = context.getImageData(0, 0, canvasWidth, canvasHeight);
context.clearRect(0, 0, canvasWidth, canvasHeight);
for (var y = 0, y2 = imageData.height; y < y2; y++) {
for (var x = 0, x2 = imageData.width; x < x2; x++) {
if (imageData.data[(y * 4 * imageData.width) + (x * 4) + 3] > 128) {
var particle = {
x: x,
y: y,
xSpeed: (Math.random() - 0.5) * particleSpeed,
ySpeed: (Math.random() - 0.5) * particleSpeed,
size: particleSize,
color: particleColor
};
particles.push(particle);
particleCount++;
if (particleCount >= particleMax) {
break;
}
}
}
if (particleCount >= particleMax) {
break;
}
}
function drawParticles() {
context.clearRect(0, 0, canvasWidth, canvasHeight);
for (var i = 0; i < particles.length; i++) {
var particle = particles[i];
particle.x += particle.xSpeed;
particle.y += particle.ySpeed;
if (particle.x < 0 || particle.x > canvasWidth) {
particle.xSpeed = -particle.xSpeed;
}
if (particle.y < 0 || particle.y > canvasHeight) {
particle.ySpeed = -particle.ySpeed;
}
context.fillStyle = particle.color;
context.beginPath();
context.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);
context.closePath();
context.fill();
}
requestAnimationFrame(drawParticles);
}
drawParticles();
// 倒计时
var countdown = document.getElementById("countdown");
var count = 3;
var countdownInterval = setInterval(function() {
if (count > 0) {
countdown.innerHTML = count;
count--;
} else {
clearInterval(countdownInterval);
countdown.style.display = "none";
document.getElementById("cake").style.display = "block";
}
}, 1000);
// 点击喜欢
document.addEventListener("click", function(event) {
if (event.target.id == "like") {
document.getElementById("like").style.display = "none";
document.getElementById("text").innerHTML = "谢谢你的喜欢!";
document.getElementById("text").style.fontSize = "80px";
document.getElementById("text").style.marginTop = "100px";
document.getElementById("text").style.animation = "text 3s ease-in-out forwards";
}
});
</script>
</body>
</html>
```