CSS动画实战 会跳舞的机器人 keyframes动画+变换效果
·
CSS动画实现跳舞的机器人
通过keyframes动画结合transform变换效果可以创建一个生动的跳舞机器人动画。以下是具体实现方法:
HTML结构
<div class="robot">
<div class="head"></div>
<div class="body"></div>
<div class="arm left-arm"></div>
<div class="arm right-arm"></div>
<div class="leg left-leg"></div>
<div class="leg right-leg"></div>
</div>
基础样式设置
.robot {
position: relative;
width: 120px;
height: 200px;
margin: 100px auto;
}
.head {
width: 60px;
height: 60px;
background: #4CAF50;
border-radius: 50%;
position: absolute;
top: 0;
left: 30px;
}
.body {
width: 70px;
height: 80px;
background: #2196F3;
position: absolute;
top: 60px;
left: 25px;
}
.arm {
width: 20px;
height: 60px;
background: #FF9800;
position: absolute;
top: 70px;
}
.left-arm {
left: 5px;
transform-origin: top center;
}
.right-arm {
right: 5px;
transform-origin: top center;
}
.leg {
width: 25px;
height: 70px;
background: #795548;
position: absolute;
top: 140px;
}
.left-leg {
left: 30px;
transform-origin: top center;
}
.right-leg {
right: 30px;
transform-origin: top center;
}
关键帧动画定义
@keyframes dance {
0%, 100% {
transform: translateY(0);
}
25% {
transform: translateY(-20px);
}
50% {
transform: translateY(0) rotate(5deg);
}
75% {
transform: translateY(-10px) rotate(-5deg);
}
}
@keyframes armSwing {
0%, 100% {
transform: rotate(0deg);
}
25% {
transform: rotate(45deg);
}
50% {
transform: rotate(-20deg);
}
75% {
transform: rotate(30deg);
}
}
@keyframes legKick {
0%, 100% {
transform: rotate(0deg);
}
25% {
transform: rotate(-15deg);
}
50% {
transform: rotate(10deg);
}
75% {
transform: rotate(-10deg);
}
}
应用动画效果
.robot {
animation: dance 2s infinite ease-in-out;
}
.left-arm {
animation: armSwing 2s infinite ease-in-out;
}
.right-arm {
animation: armSwing 2s infinite ease-in-out reverse;
}
.left-leg {
animation: legKick 2s infinite ease-in-out;
}
.right-leg {
animation: legKick 2s infinite ease-in-out reverse;
}
动画优化技巧
添加眼睛和嘴巴细节增强表现力
<div class="head">
<div class="eye left-eye"></div>
<div class="eye right-eye"></div>
<div class="mouth"></div>
</div>
.eye {
width: 10px;
height: 10px;
background: white;
border-radius: 50%;
position: absolute;
top: 20px;
}
.left-eye {
left: 15px;
}
.right-eye {
right: 15px;
}
.mouth {
width: 20px;
height: 5px;
background: white;
border-radius: 5px;
position: absolute;
bottom: 15px;
left: 20px;
}
添加阴影效果增加立体感
.robot {
filter: drop-shadow(0 5px 10px rgba(0,0,0,0.3));
}
调整动画时序创造更自然效果
.left-arm {
animation-delay: 0.1s;
}
.right-leg {
animation-delay: 0.2s;
}
这个实现展示了如何通过分解机器人的各个部位,为每个部位创建独立的动画,再通过transform属性实现旋转、位移等效果,最终组合成一个完整的跳舞动画。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)