.title
  h1 Santa's Reindeer
  ul.socials
    li
      a(href="https://ivan.odintsov.me", target="_blank")
        img(src="https://img.icons8.com/material/48/000000/link--v1.png", alt="Link icon")
    li
      a(href="https://twitter.com/odintsov_design", target="_blank")
        img(src="https://img.icons8.com/color/48/000000/twitter.png", alt="Twitter icon")

.container
  .artboard
    .deer
      .rocking
        .head
          .horns
            .horn.horn-left
              .line.line-one
              .line
              .line.line-three
            .horn.horn-right
              .line.line-one
              .line
              .line.line-three
          .ears
            .ear.ear-left
            .ear.ear-right
          .eyes
            .eye.eye-left
            .eye.eye-right
          .nose
        .body
          .shadow
          .hooves
            .hoof-one
              .line
              .anim-part
                .circle
                  .circle
                    .circle
                      .circle
                        .circle.circle-last
            .hoof-two
              .line-one
              .line-two
        .tail
          .circle
            .circle
              .circle
                .circle
                  .circle
      .legs
        .leg-left
          .anim-part
            .line
        .leg-right
          .anim-part
            .circle
              .circle
                .circle
                  .circle
                    .circle
                      .circle
                        .circle
                          .circle
                            .circle.circle-last
    .presents
      .present.present-one
      .present.present-two
      .present.present-two.present-two-right
      .present.present-three
    .snow
    - for (var i = 1; i < 100; i++)
      .snowflake
      
.credits.
  Created with <span class="love"></span> by <a href="https://codepen.io/ivanodintsov">Ivan Odintsov</a>  &nbsp;&nbsp;&middot;&nbsp;&nbsp;  Original by <a href="https://dribbble.com/shots/2421804-Merry-Christmas">Artua</a>
View Compiled
$gray: #f4f4f4
$red: #fb5d5d
$blue: #82dfe3
$blue-light: #e7eff7
$blue-dark: #69b2cb
$blue-dark-two: #495169
$brown: #91655d
$brown-two: #835f5a
$brown-light: #9c7169
$brown-light-two: #aa8275
$brown-lighten: #e7beb2
$brown-dark: #c39e9a
$brown-dark-two: #674a4a
$brown-dark-three: #835f5b
$yellow: #ffb63c
$pink: #e66

.container
  background-color: white
  border-radius: 4px
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)
  height: 300px
  margin: 40px auto 50px auto
  position: relative
  width: 450px

.artboard
  height: 100%
  overflow: hidden
  position: relative
  width: 100%

.deer
  width: 50px
  margin: 0 auto
  position: relative

.rocking
  animation: rocking .4s ease-in-out infinite alternate-reverse
  transform-origin: bottom left
  position: relative
  z-index: 1

.head
  position: relative
  width: 50px

.horns
  animation: rocking .4s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate-reverse
  height: 55px
  position: relative
  top: 21px
  width: 50px

.horn
  position: relative

  &:before
    background-color: $brown
    border-radius: 7px 7px 0 0
    content: ''
    display: block
    height: 55px
    position: absolute
    width: 7px
    z-index: 1

  .line
    background-color: $brown
    border-radius: 7px 0 0 7px
    height: 7px
    width: 20px
    margin-bottom: 15px
    position: relative
    top: 10px

    &-one
      width: 15px

    &-three
      top: -22px
      width: 17px

  &-left
    top: -7px
    transform: rotate(-25deg)

    &:before
      box-shadow: inset 2px 0 0 0 $brown-light

    .line
      box-shadow: inset 0 2px 0 0 $brown-light
      right: 15px
      transform: rotate(30deg)

      &-one
        right: 10px

      &-three
        box-shadow: inset 0 -2px 0 0 $brown-light
        right: -3px
        transform: rotate(160deg)

  &-right
    bottom: 55px
    left: 40px
    transform: rotate(25deg)

    &:before
      box-shadow: inset -2px 0 0 0 $brown-two

    .line
      box-shadow: inset 0 2px 0 0 $brown-two
      right: -2px
      transform: rotate(150deg)

      &-three
        right: 13px
        transform: rotate(20deg)

.ears
  position: absolute
  top: 70px

.ear
  background-color: $brown
  border-radius: 100% 50% 50% 50%
  height: 18px
  position: relative
  right: 20px
  top: 10px
  transform: rotate(30deg)
  transform-origin: 100%
  width: 30px

  &:before
    background-color: $brown-lighten
    border-radius: 100% 50% 50% 50%
    height: 9px
    content: ''
    display: block
    left: 5px
    position: relative
    top: 5px
    width: 15px

  &-left
    animation: ear-left 2s cubic-bezier(0.6, -0.28, 0.74, 0.05) infinite alternate-reverse
    transform: rotate(30deg)

  &-right
    animation: ear-right 2s cubic-bezier(0.6, -0.28, 0.74, 0.05) 2s infinite alternate-reverse
    left: 10px
    right: 0
    top: -8px
    transform: rotate(160deg)

.eyes
  position: absolute
  top: 90px
  right: -5px
  width: 32px
  z-index: 2

  .eye
    background: linear-gradient(0deg, white 50%, $brown-light-two 50%)
    border-radius: 15px
    height: 15px
    width: 15px

    &:before
      animation: eaves 3s infinite alternate-reverse
      background-color: $brown-light-two
      border-radius: 9px 9px 0 0
      height: 9px
      content: ''
      display: block
      position: relative
      width: 15px
      top: -1px
      z-index: 1

    &:after
      animation: eyes 3s infinite alternate-reverse
      background-color: $blue-dark-two
      border-radius: 5px
      height: 5px
      content: ''
      display: block
      left: 5px
      position: relative
      top: -3px
      transform: translate(3px, 2px)
      width: 5px

    &-left
      float: left

    &-right
      float: right

.nose
  background-color: $brown
  border-radius: 0 7px 15px
  top: 47px
  height: 18px
  left: 40px
  position: relative
  width: 20px
  z-index: 2

  &:before
    background-color: $red
    border-radius: 15px
    content: ''
    display: block
    height: 14px
    position: absolute
    right: -.5px
    top: -.5px
    width: 16px

  &:after
    background-color: white
    border-radius: 5px
    content: ''
    display: block
    height: 2px
    position: absolute
    right: 4px
    top: 2px
    width: 5px

.body
  background-color: $brown
  border-radius: 50px 50px 0
  box-shadow: inset 7px 0 0 0 $brown-light
  height: 140px
  position: relative
  width: 50px
  z-index: 1

  &:before
    background-color: $brown-lighten
    border-radius: 20px 0 0 20px
    bottom: 20px
    box-shadow: inset -7px 0 0 0 $brown-dark
    content: ''
    display: block
    height: 65px
    position: absolute
    right: 0
    width: 20px

.hooves
  position: relative
  bottom: 40px
  right: 34px

.hoof

  &-one
    animation: jump .3s ease-in-out infinite alternate-reverse
    left: 10px
    position: relative
    top: 70px
    transform: rotate(25deg)
    transform-origin: 100% 50%

    .line
      height: 30px
      border: 20px solid
      border-radius: 40px
      border-color: transparent transparent $brown transparent
      left: 25px
      width: 30px
      position: relative
      top: 5px
      transform: rotate(-30deg)

    .anim-part
      position: relative
      bottom: 23px
      left: 81px
      transform: rotate(-75deg)
      transform-origin: left

    .circle
      animation: hoof-one .3s ease-in-out infinite alternate-reverse
      background-color: $brown
      height: 20px
      width: 20px
      border-radius: 30px
      transform: translateX(3px) rotate(0deg)

      &-last
        border-radius: 20px 0 0 20px
        transform: translateX(2px) rotate(0deg)

        &:before
          content: ''
          display: block
          border-top: 20px solid $brown-dark-two
          border-left: 7px solid transparent
          height: 0
          left: 10px
          width: 7px
          position: relative
          z-index: 1

        &:after
          background-color: $yellow
          border-radius: 10px
          bottom: 30px
          content: ''
          display: block
          height: 40px
          left: 19px
          position: relative
          width: 9px

  &-two
    animation: jump-two .3s ease-in-out infinite alternate-reverse
    left: 55px
    position: relative
    top: 10px
    z-index: -1

    .line

      &-one,
      &-two
        height: 10px
        border: 20px solid
        border-radius: 40px
        border-color: transparent transparent $brown transparent
        width: 10px
        position: absolute

      &-one
        transform: rotate(-45deg)

      &-two
        left: 30px
        transform: rotate(135deg)

.tail
  background-color: $brown-light
  bottom: 0
  left: 4px
  position: absolute
  width: 20px
  z-index: 0

  .circle
    animation: tail 2s cubic-bezier(0, 0.02, 0.9, 2) infinite
    background-color: $brown-light
    border-radius: 11px
    height: 12px
    position: relative
    right: 2px
    transform: rotate(-5deg)
    width: 12px

.legs
  position: relative

  &:before
    background: linear-gradient(to left, $brown 50%, $brown-light 50%)
    bottom: 0
    content: ''
    display: block
    height: 10px
    left: 7px
    position: absolute
    width: 30px
    z-index: 0

.leg

  &-left,
  &-right

    &:before,
    &:after
      content: ''
      display: block
      position: absolute
      z-index: 1

  &-left

    .anim-part
      animation: leg-left .4s ease-out infinite alternate-reverse
      position: relative
      top: 1px
      transform: rotate(5deg) translateX(3px)
      transform-origin: right
      z-index: 2

      &:before,
      &:after
        content: ''
        display: block
        position: absolute
        z-index: 1

      &:before
        height: 16px
        width: 16px
        border: 20px solid
        border-radius: 30px
        border-color: transparent $brown-dark-three transparent transparent
        transform: rotate(-45deg)
        top: -17px
        left: 17px

      .line
        background-color: $brown-dark-three
        height: 25px
        position: absolute
        width: 20px
        left: 51px
        top: 7px
        z-index: 2
        transform: skew(-9deg)

      &:after
        background-color: $brown-dark-three
        height: 20px
        left: 33px
        top: -20px
        width: 24px

    &:after
      background-color: $brown-dark-two
      height: 13px
      left: 48px
      top: 32px
      transform: skew(-8deg)
      width: 20px
      z-index: 2

  &-right
    position: relative
    right: 10px

    &:before
      height: 30px
      width: 38px
      border: 20px solid
      border-radius: 40px
      border-color: $brown transparent transparent transparent
      transform: rotate(-15deg)
      z-index: 3
      top: -29px
      left: 21px

    .anim-part
      position: absolute
      left: 64px
      bottom: 9px
      transform: rotate(43deg)
      z-index: 2

      .circle
        animation: leg-right .4s ease-out infinite alternate-reverse
        width: 20px
        height: 20px
        background-color: $brown
        border-radius: 20px
        transform: translateX(4px) rotate(4deg)

        &-last
          border-radius: 20px 0 0 20px

          &:before
            content: ''
            display: block
            border-bottom: 20px solid $brown-dark-two
            border-right: 2px solid transparent
            height: 0
            left: 15px
            width: 11px
            position: relative
            z-index: 1

.presents
  top: 3px
  height: 45px
  margin: 0 auto
  position: relative
  width: 110px

  &:after
    animation: shadow .4s ease-out infinite alternate-reverse
    background-color: $blue-light
    bottom: 0
    border-radius: 7px
    content: ''
    display: block
    height: 7px
    left: -22px
    position: absolute
    width: 170px

.present
  border-radius: 4px
  bottom: 3px
  position: absolute
  z-index: 1

  &:before,
  &:after
    content: ''
    display: block
    position: relative

  &:before
    border-radius: 4px 4px 2px 2px
    box-shadow: 0 2px 0 0 rgba(0, 0, 0, .04)
    right: 1px

  &-one
    background-color: $red
    height: 45px
    right: 32px
    width: 45px
    z-index: 2

    &:before
      background-color: lighten($red, 5)
      height: 12px
      width: 47px

  &-two
    background-color: $blue
    height: 30px
    width: 30px

    &:before
      background-color: lighten($blue, 5)
      height: 10px
      width: 32px

    &:after
      background-color: $blue-dark
      bottom: 10px
      height: 100%
      left: 7px
      width: 5px

    &-right
      right: 5px

  &-three
    background-color: $yellow
    height: 25px
    left: 25px
    margin: auto
    width: 25px
    z-index: 2

    &:before
      background-color: lighten($yellow, 5)
      height: 8px
      width: 27px

    &:after
      background-color: darken($red, 2)
      bottom: 8px
      height: 100%
      left: 13px
      width: 5px

.snowflake
  background-color: #e4e4e4
  border-radius: 3px
  height: 3px
  position: absolute
  top: 0
  width: 3px
  z-index: 3

@for $i from 0 through 100
  .snowflake:nth-child(#{$i})
    animation: snow-#{$i} random(10) + 5 + s infinite

  @keyframes snow-#{$i}
    $x: random(450) + px
    from
      transform: translate($x, random(300) - 300 + px)
    to
      transform: translate($x, random(300) + 400 + px)

@keyframes tail
  10%
    transform: rotate(2deg)
  20%
    transform: rotate(-5deg)

@keyframes shadow
  to
    width: 185px

@keyframes eyes
  50%
    transform: translate(3px, 2px)
  60%
    transform: translate(0, 0)
  100%
    transform: translate(0, 0)

@keyframes eaves
  50%
    transform: translateY(0)
  60%
    transform: translateY(-1px)
  100%
    transform: translateY(-1px)

@keyframes hoof-one
  to
    transform: translateX(2px) rotate(5deg)

@keyframes jump
  to
    transform: translateY(-2px) rotate(25deg)

@keyframes jump-two
  to
    transform: translateY(2px)

@keyframes rocking
  to
    transform: rotate(-1deg)

@keyframes ear-left
  85%
    transform: rotate(30deg)
  100%
    transform: rotate(-10deg)

@keyframes ear-right
  85%
    transform: rotate(160deg)
  100%
    transform: rotate(170deg)

@keyframes leg-right
  to
    transform: translateX(4px) rotate(2deg)

@keyframes leg-left
  0%
    transform: rotate(0deg) translateX(0px)
  50%
    transform: rotate(5deg) translateX(3px)

// Template styles
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600)

a
  font-weight: 600
  color: #91a7ff
  text-decoration: none
  
  &:hover
    color: #5c7cfa
    text-decoration: underline

html,
body
  font-family: 'Open Sans'

body
  background-color: #f8f9fa
  color: #adb5bd

.title
  text-align: center
  
  h1
    font-size: 1.5em
    margin: 100px 0 10px 0
  
.socials
  display: block
  font-size: 14px
  margin: 0
  padding: 0

  li
    display: inline

    &:not(:last-child)
      margin-right: .75em

    a
      vertical-align: middle
  
      &:hover
        img
          animation: link .5s

      img
        width: 1.3em

.credits
  font-size: .8em
  text-align: center

.love
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/42764/heart-smil.svg)
  display: inline-block
  height: 16px
  vertical-align: middle
  width: 16px

.container
  background-color: white
  border-radius: 4px
  box-shadow: 0 1px 3px #dee2e6
  height: 300px
  margin: 40px auto 50px auto
  position: relative
  width: 450px

.artboard
  height: 100%
  overflow: hidden
  position: relative
  width: 100%

@keyframes link
  25%
    transform: rotate(10deg)
  50%
    transform: rotate(-10deg)
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.