机器狗随音乐走动动画效果

代码语言:html

所属分类:动画

代码描述:机器狗随音乐走动动画效果,点击播放音乐按钮,机器狗就走起来了

代码标签: 走动 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
body {
  align-items: center;
  display: flex;
  height: 100vh;
  justify-content: center;
  margin: 0;
  background: linear-gradient(
    0deg,
    rgba(158, 217, 198, 1) 0%,
    rgba(158, 217, 198, 1) 40%,
    rgba(199, 255, 221, 1) 40%,
    rgba(199, 255, 221, 1) 100%
  );
}

body[onload] > *,
body[onload] > * *,
body.play-animation > *,
body.play-animation > * * {
  animation-play-state: running;
}

body[onload] audio {
  display: none;
}

.container {
  position: relative;
  font-size: clamp(8px, 2vmin, 17px);
}

.arm-wrapper,
.arm-2,
.spot-body,
.details,
.top-leg-1,
.bottom-leg-1,
.top-leg-2,
.bottom-leg-2,
.top-leg-3,
.bottom-leg-3,
.top-leg-4,
.bottom-leg-4,
.shadow {
  animation-duration: 1s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  animation-play-state: paused;
}

.arm-wrapper {
  animation-name: moveBody;
}

.arm-wrapper > * {
  position: absolute;
}

.spot-arm {
  background: #262626;
  height: 2.3em;
}

.arm-base {
  border-radius: 15% 0% 58% 0% / 15% 0% 58% 0%;
  left: 14em;
  top: -1.4em;
  transform: rotate(1deg);
  width: 10em;
}

.arm-1 {
  border-radius: 0% 58% 0% 58% / 0% 58% 0% 58%;
  left: 13.2em;
  top: -3.7em;
  transform: rotate(11deg);
  width: 11em;
}

.arm-2 {
  animation-name: moveArm3;
  border-radius: 58% 0% 0% 0% / 58% 0% 0% 0%;
  left: 13.4em;
  top: -6em;
  width: 13em;
}

@keyframes moveArm3 {
  0%,
  100% {
    top: -7em;
    transform: rotate(-10deg);
  }
  10%,
  25% {
    top: -6em;
    transform: rotate(1deg);
  }
  35%,
  50% {
    top: -7em;
    transform: rotate(-10deg);
  }
  60%,
  75% {
    top: -6em;
    transform: rotate(1deg);
  }
  85%,
  95% {
    top: -7em;
    transform: rotate(-10deg);
  }
}

.circle {
  background: grey;
  border-radius: 50%;
  height: 1.9em;
  left: 10em;
  position: absolute;
  top: 2px;
  width: 1.9em;
  z-index: 2;
}

.arm-top {
  border-radius: 1em;
  height: 4em;
  left: 12em;
  position: absolute;
  top: -0.8em;
  transform: rotate(-15deg) skew(25deg) translate(-1em, 0.3em);
  width: 4em;
}

.spot-body {
  background: #ffdb0d;
  border-radius: 2em 2em 5em 9em / 3em 2em 11em 14em;
  border: 5px solid #262626;
  height: 5em;
  position: static;
  width: 25em;
  transform: rotate(1deg);
  animation-name: moveBody;
}

.container > *:not(.spot-body) {
  position: absolute;
}

.top-legs {
  border-radius: 1em 1em 2em 7em / 3em 2em 11em 14em;
  border-style: solid;
  border-width: 2px;
  height: 13em;
  width: 2.2em;
}

.bottom-legs {
  border-radius: 2em 2em 2em 2em / 2em 2em 10em 10em;
  border: 2px solid #262626;
  color: white;
  height: 11em;
  width: 1.2em;
  z-index: -2;
}

.top-leg-1 {
  animation-name: moveTopLeg1;
  background: #ffdb0d;
  border-color: #ffdb0d;
  left: -2em;
  top: 0;
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(50deg);
  z-index: 2;
}

@keyframes moveTopLeg1 {
  0%,
  100% {
    left: -0.5em;
    top: -1em;
    transform: rotate(33deg);
  }
  10%,
  25% {
    left: -2em;
    top: -1em;
    transform: rotate(59deg);
  }
  35%,
  50% {
    left: -3em;
    top: -6em;
    transform: rotate(90deg);
  }
  60%,
  75% {
    left: -1em;
    top: 0.5em;
    transform: rotate(40deg);
  }
  85%,
  95% {
    left: -0.5em;
    top: -1em;
    transform: rotate(33deg);
  }
}

.bottom-leg-1 {
  animation-name: moveBottomLeg1;
  background: #262626;
  left: -2em;
  top: 9em;
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(-47deg);
  z-index: 1;
}

@keyframes moveBottomLeg1 {
  0%,
  100% {
    left: 0em;
    top: 9em;
    transform: rotate(-33deg);
  }
  10%,
  25% {
    left: -5em;
    top: 8em;
    transform: rotate(-16deg);
  }
  35%,
  50% {
    left: -4em;
    top: -1em;
    transform: rotate(-50deg);
  }
  60%,
  75% {
    left: 1em;
    top: 9em;
    transform: rotate(-62deg);
  }
  85%,
  95% {
    left: 0em;
    top: 9em;
    transform: rotate(-33deg);
  }
}

.top-leg-2 {
  animation-name: moveTopLeg2;
  background: #262626;
  left: -1em;
  top: 1em;
  transform: rotate(51deg);
  z-index: -1;
}

@keyframes moveTopLeg2 {
  0%,
  100% {
    left: -2em;
    top: -1em;
    transform: rotate(51deg);
  }
  10%,
  25% {
    left: 1em;
    top: 2.2em;
    transform: rotate(36deg);
  }
  35%,
  50% {
    left: -1em;
    top: -1em;
    transform: rotate(44deg);
  }
  60%,
  75% {
    left: -1em;
    top: -2.8em;
    transform: rotate(80deg);
  }
  85%,
  95% {
    left: -2em;
    top: -1em;
    transform: rotate(51deg);
  }
}

.bottom-leg-2 {
  animation-name: moveBottomLeg2;
  background: #262626;
  left: -1em;
  top: 8em;
  transform: rotate(-46deg);
}

@keyframes moveBottomLeg2 {
  0%,
  100% {
    left: 0em;
    top: 4.5em;
    transform: rotate(-69deg);
  }
  10%,
  25% {
    left: 2.5em;
    top: 9em;
    transform: rotate(-50deg);
  }
  35%,
  50% {
    left: -1.2em;
    top: 6.5em;
    transform: rotate(-32deg);
  }
  60%,
  75% {
    left: -4.5em;
    top: 3.5em;
    transform: rotate(-5deg);
  }
  85%,
  95% {
    left: -0.5em;
    top: 4.2em;
    transform: rotate(-69deg);
  }
}

.top-leg-3 {
  animation-name: moveTopLeg3;
  background: #262626;
  left: 16em;
  top: 1.5em;
  transform: rotate(35deg);
  z-index: -1;
}

@keyframes moveTopLeg3 {
  0%,
  100% {
    left: 17em;
    top: 1em;
    transform: rotate(23deg);
  }
  10%,
  25% {
    left: 16em;
    top: 2em;
    transform: rotate(55deg);
  }
  35%,
  50% {
    left: 17em;
    top: -2.9em;
    transform: rotate(50deg);
  }
  60%,
  75% {
    left: 19em;
    top: 2em;
    transform: rotate(14deg);
  }
  85%,
  95% {
    left: 17em;
    top: 1em;
    transform: rotate(23deg);
  }
}

.bottom-leg-3 {
  animation-name: moveBottomLeg3;
  background: #262626;
  left: 18.5em;
  top: 9em;
  transform: rotate(-66deg);
}

@keyframes moveBottomLeg3 {
  0%,
  100% {
    left: 19.5em;
    top: 9.5em;
    transform: rotate(-45deg);
  }
  10%,
  25% {
    left: 16.5em;
    top: 8em;
    transform: rotate(-52deg);
  }
  35%,
  50% {
    left: 19em;
    top: 1.5em;
    transform: rotate(-82deg);
  }
  60%,
  75% {
    left: 23.5em;
    top: 9em;
    transform: rotate(-60deg);
  }
  85%,
  95% {
    left: 19.5em;
    top: 9.5em;
    transform: rotate(-45deg);
  }
}

.top-leg-4 {
  animation-name: moveTopLeg4;
  background: #ffdb0d;
  border-color: #ffdb0d;
  left: 17em;
  top: 1em;
  transform: rotate(38deg);
  z-index: 2;
}

@keyframes moveTopLeg4 {
  0%,
  100% {
    left: 18.5em;
    top: 0em;
    transform: rotate(23deg);
  }
  10%,
  25% {
    left: 20.5em;
    top: 2em;
    transform: rotate(4deg);
  }
  35%,
  50% {
    left: 18.5em;
    top: -0.5em;
    transform: rotate(24deg);
  }
  60%,
  75% {
    left: 16em;
    top: -0.5em;
    transform: rotate(55deg);
  }
  85%,
  95% {
    left: 18.5em;
    top: 0em;
    transform: rotate(23deg);
  }
}

.bottom-leg-4 {
  animation-name: moveBottomLeg4;
  background: #262626;
  left: 19em;
  top: 9.5em;
  transform: rotate(-60deg);
  z-index: 1;
}

@keyframes moveBottomLeg4 {
  0%,
  100% {
    left: 22em;
    top: 6em;
    transform: rotate(-90deg);
  }
  10%,
  25% {
    left: 24.5em;
    top: 11em;
    transform: rotate(-54deg);
  }
  35%,
  50% {
    left: 20em;
    top: 9em;
    transform: rotate(-36deg);
  }
  60%,
  75% {
    left: 16em;
    top: 6em;
    transform: rotate(-54deg);
  }
  85%,
  95% {
    left: 22em;
    top: 6em;
    transform: rotate(-90deg);
  }
}

.foot {
  background: #262626;
  border-radius: 50%;
  height: 1.6em;
  left: -0.3em;
  position: absolute;
  top: 9.6em;
  transform: rotate(50deg);
  width: 1.9em;
}

.back-legs {
  height: 11em;
}

.details {
  animation-name: moveBody;
  background: #262626;
  border-radius: 5px;
  height: 4em;
  width: 4em;
}

.detail-1 {
  left: 2em;
  top: 0.5em;
}

.detail-2 {
  left: 20em;
  top: 0.9em;
}

@keyframes moveBody {
  0%,
  100% {
    transform: rotate(1deg) translateY(-2em);
  }
  10%,
  25% {
    transform: rotate(1deg) translateY(0);
  }
  35%,
  50% {
    transform: rotate(1deg) translateY(-2em);
  }
  60%,
  75% {
    transform: rotate(1deg) translateY(0);
  }
  85%,
  95% {
    transform: rotate(1deg) translateY(-2em);
  }
}

.hinge {
  background: #262626;
  height: 0.8em;
  left: 1em;
  position: absolute;
  top: 11.8em;
  width: 0.8em;
  border-radius: 50%;
}

.shadow {
  height: 1em;
  width: 24em;
  border-radius: 50%;
  background: #7fad9f;
  z-index: -5;
  animation-name: moveShadow;
  top: 18em;
}

@keyframes moveShadow {
  0%,
  100% {
    transform: scalex(0.68);
  }
  10%,
  25% {
    transform: scalex(1);
  }
  35%,
  50% {
    transform: scalex(0.68);
  }
  60%,
  75% {
    transform: scalex(1);
  }
  85%,
  95% {
    transform: scalex(0.68);
  }
}

.box-group {
  animation: parallax 20s linear infinite;
  font-size: clamp(10px, 2vmin, 17px);
  left: 0%;
  position: fixed;
  z-index: -2;
  top: 53%;
}

.box-1,
.box-2,
.box-3 {
  background: #c4aa89;
  border-radius: 5px;
  border: 3px solid #6e5747;
  z-index: -2;
  position: absolute;
}

.box-1 {
  height: 10em;
  width: 10em;
}

.box-2 {
  height: 2em;
  width: 8em;
  top: 8em;
  left: -5em;
}

.box-3 {
  height: 7em;
  width: 10em;
  left: -11em;
}

@keyframes parallax {
  from {
    left: 0%;
  }
  to {
    left: 120%;
  }
}

audio {
  bottom: 1rem;
  position: fixed;
  left: 1rem;
}

audio:focus {
  outline: none;
}
</style>

</head>
<body translate="no">
<div class="container">
<div class="arm-wrapper">
<div class="spot-arm arm-base"></div>
<div class="spot-arm arm-1"></div>
<div class="spot-arm arm-2">
<div class="circle"></div>
<div class="spot-arm arm-top"></div>
</div>
</div>
<div class="spot-body"></div>
<div class="details detail-1"></div>
<div class="details detail-2"></div>
<div class="top-legs top-leg-1">
<div class="hinge"></div>
</div>
<div class="bottom-legs bottom-leg-1">
<div class="foot"></div>
</div>
<div class="back-legs top-legs top-leg-2"></div>
<div class="back-legs bottom-legs bottom-leg-2">
<div class="foot"></div>
</div>
<div class="back-legs top-legs top-leg-3"></div>
 <div class="back-legs bottom-legs bottom-leg-3">
<div class="foot"></div>
</div>
<div class="top-legs top-leg-4">
<div class="hinge"></div>
</div>
<div class="bottom-legs bottom-leg-4">
<div class="foot"></div>
</div>
<div class="shadow"></div>
</div>
<audio loop onplay="document.body.classList.add('play-animation')" onpause="document.body.classList.remove('play-animation')" src="data:audio/ogg;base64,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.........完整代码请登录后点击上方下载按钮下载查看

网友评论0