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属性实现旋转、位移等效果,最终组合成一个完整的跳舞动画。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐