Penguin by

Ivan

On: 2 Jun 2016

Personal site: http://codepen.io/sfi0zy/

<div class="bg"></div>

<div class="penguin">
    <div class="belly"></div>
    <div class="eye"></div>
    <div class="eye"></div>
    <div class="nose"></div>
    <div class="feet"></div>
    <div class="feet"></div>
</div>
@-webkit-keyframes move-penguin {
  0% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(0.5);
            transform: translateX(-50%) translateY(-50%) scale(0.5);
  }
  50% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(1);
            transform: translateX(-50%) translateY(-50%) scale(1);
  }
  80% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(1);
            transform: translateX(-50%) translateY(-50%) scale(1);
  }
  100% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(0.5);
            transform: translateX(-50%) translateY(-50%) scale(0.5);
  }
}
@keyframes move-penguin {
  0% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(0.5);
            transform: translateX(-50%) translateY(-50%) scale(0.5);
  }
  50% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(1);
            transform: translateX(-50%) translateY(-50%) scale(1);
  }
  80% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(1);
            transform: translateX(-50%) translateY(-50%) scale(1);
  }
  100% {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(0.5);
            transform: translateX(-50%) translateY(-50%) scale(0.5);
  }
}
@-webkit-keyframes look {
  0% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  50% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  60% {
    background-image: -webkit-radial-gradient(at 80% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 80% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  70% {
    background-image: -webkit-radial-gradient(at 20% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 20% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  80% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  100% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
}
@keyframes look {
  0% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  50% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  60% {
    background-image: -webkit-radial-gradient(at 80% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 80% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  70% {
    background-image: -webkit-radial-gradient(at 20% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 20% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  80% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
  100% {
    background-image: -webkit-radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
    background-image: radial-gradient(at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  }
}
@-webkit-keyframes walk {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@keyframes walk {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
body {
  background: #fff;
}
*,
*:before,
*:after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  position: inherit;
}
*:before,
*:after {
  content: "";
}
.bg {
  background: #55f;
  height: 35vw;
  width: 35vw;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translateX(-50%) translateY(-50%);
          transform: translateX(-50%) translateY(-50%);
  border-radius: 50%;
  border: solid 1vw #000;
}
.penguin {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translateX(-50%) translateY(-50%);
          transform: translateX(-50%) translateY(-50%);
  background: #000;
  height: 50vw;
  width: 37.5vw;
  border-radius: 50%;
  -webkit-animation: 6s move-penguin infinite;
          animation: 6s move-penguin infinite;
}
.penguin:before,
.penguin:after {
  background: #000;
  height: 20%;
  width: 40%;
  top: 40%;
  z-index: -1;
}
.penguin:before {
  left: -5%;
  -webkit-transform: skew(-45deg);
          transform: skew(-45deg);
}
.penguin:after {
  right: -5%;
  -webkit-transform: skew(45deg);
          transform: skew(45deg);
}
.penguin .belly {
  background: #fff;
  height: 60%;
  width: 60%;
  border-radius: 50%;
  bottom: 0;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
}
.penguin .eye {
  background: #fff;
  height: 15%;
  width: 20%;
  top: 20%;
  border-radius: 50%;
  background-image: -webkit-radial-gradient(50% 50%, circle, #000, #000 20%, #fff 21%, #fff);
  background-image: radial-gradient(circle at 50% 50%, #000, #000 20%, #fff 21%, #fff);
  -webkit-animation: 6s look infinite;
          animation: 6s look infinite;
}
.penguin .eye:nth-of-type(2) {
  left: 20%;
}
.penguin .eye:nth-of-type(3) {
  right: 20%;
}
.penguin .nose {
  height: 7.5vw;
  width: 7.5vw;
  top: 37%;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  overflow: hidden;
}
.penguin .nose:before {
  background: #ff0;
  height: 100%;
  width: 100%;
  top: -40%;
  left: 33%;
  -webkit-transform: rotateZ(45deg) translateX(-50%);
          transform: rotateZ(45deg) translateX(-50%);
}
.penguin .feet {
  background: #ff0;
  height: 10%;
  width: 25%;
  bottom: -2%;
  border-radius: 50% 50% 0 0;
}
.penguin .feet:nth-of-type(5) {
  left: 10%;
  -webkit-animation: .5s walk infinite;
          animation: .5s walk infinite;
}
.penguin .feet:nth-of-type(6) {
  right: 10%;
  -webkit-animation: .5s .25s walk infinite;
          animation: .5s .25s walk infinite;
}

35