创建一个简单的HTML和CSS动画来庆祝生日是一个有趣的前端练习。下面是一个基础示例,展示如何使用HTML和CSS来制作一个动态的“生日快乐”动画效果。
HTML结构
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>生日快乐动画</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="birthday-container">
<h1 class="birthday-message">生日快乐</h1>
<div class="cake">
<div class="candles">
<div class="flame"></div>
<div class="flame"></div>
<div class="flame"></div>
</div>
</div>
</div>
</body>
</html>
CSS样式
/* styles.css */
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-color: #f0e68c; /* 温馨的背景色 */
overflow: hidden;
}
.birthday-container {
text-align: center;
}
.birthday-message {
font-size: 3em;
color: #ffa07a; /* 漂亮的字体颜色 */
margin-bottom: 20px;
animation: blinkText 2s infinite;
}
.cake {
width: 150px;
height: 100px;
background-color: #fdd;
border-radius: 20px;
position: relative;
overflow: hidden;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
.candles {
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
display: flex;
justify-content: space-around;
width: 100%;
margin-bottom: -10px;
}
.flame {
width: 15px;
height: 15px;
background-color: #ff6347; /* 火焰的颜色 */
border-radius: 50%;
box-shadow: 0 0 5px rgba(255, 100, 71, 0.7);
animation: flame 2s infinite;
}
@keyframes blinkText {
0%, 100% { opacity: 1; }
50% { opacity: 0.2; }
}
@keyframes flame {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-20px); }
}
动画效果说明
.birthday-message
类使用了blinkText
动画,它在文本完全不透明和半透明之间切换,创建闪烁效果。.cake
类定义了一个蛋糕的容器,使用border-radius
来创建蛋糕的圆角效果。.candles
类定义了蜡烛的位置和布局,蜡烛的火焰使用.flame
类,并通过flame
动画实现上下摆动的效果,模拟火焰的自然摇曳。
这个示例创建了一个简单的动态“生日快乐”动画,你可以根据自己的需求进一步美化和扩展这个效果。例如,添加音乐、更多的装饰元素或者更复杂的动画效果。