<div id="octowrap">
  <div class="body">
    <div class="head">
      <div class="left-eye"></div>
      <div class="right-eye"></div>
      <div class="mouth"></div>
    </div>
    <div class="feet">
      <div class="first"></div>
      <div class="second"></div>
      <div class="third"></div>
      <div class="fourth"></div>
    </div>
  </div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
  <div class="bubble"></div>
</div>
$light-blue-green: rgb(3, 131, 135);
$lightest-blue: rgb(105, 188, 243);
$light-blue: rgb(41, 128, 185);
$dark-blue: rgb(52, 152, 219);

/* Main colors for octopus and background */
$color-primary: $light-blue;
$color-secondary: $dark-blue;
$color-third: $light-blue-green;
$color-fourth: $lightest-blue;

/* Bubble animation conf */
$animation-duration: 5.5s;
$animation-type: ease-out;
$animation-delay: 0.5s;

/* Bubble conf */
$bubble-background: radial-gradient(
  ellipse at center,
  rgba(105, 171, 223, 0.1) 25%,
  #54a9ed 100%
);

$gradient-primary: linear-gradient(
  141deg,
  $color-third 0%,
  $color-secondary 51%,
  $color-primary 75%
);

a {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  left: 25px;
  bottom: 25px;
  color: #fff;
  font-family: sans-serif;
  text-align: left;
  font-size: 1em;
}

* {
  margin: 0;
  padding: 0;
}

body,
html {
  width: 100%;
  height: 100%;
}

#octowrap {
  display: table;
  width: 100%;
  height: 100%;
  background: $gradient-primary;

  .bubble {
    background: $bubble-background;
    border-radius: 50%;
    opacity: 0.7;
    position: absolute;
    width: 18px;
    height: 18px;
    opacity: 1;

    &:nth-child(2) {
      width: 28px;
      height: 28px;
      left: 35%;
      top: 40%;
      opacity: 1;
      animation: blubb-4 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(3) {
      width: 38px;
      height: 38px;
      left: 30%;
      top: 60%;
      opacity: 1;
      animation: blubb-6 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(4) {
      width: 48px;
      height: 48px;
      left: 20%;
      top: 70%;
      opacity: 1;
      animation: blubb-7 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(5) {
      width: 55px;
      height: 55px;
      left: 15%;
      top: 30%;
      opacity: 1;
      animation: blubb-3 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(6) {
      width: 60px;
      height: 60px;
      left: 25%;
      top: 50%;
      animation: blubb-5 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(7) {
      width: 17px;
      height: 17px;
      left: 35%;
      top: 10%;
      animation: blubb-1 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(8) {
      width: 18px;
      height: 18px;
      right: 15%;
      top: 80%;
      animation: blubb-8 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(9) {
      width: 28px;
      height: 28px;
      right: 35%;
      top: 20%;
      animation: blubb-2 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(10) {
      width: 38px;
      height: 38px;
      right: 25%;
      top: 60%;
      animation: blubb-6 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(11) {
      width: 40px;
      height: 40px;
      right: 35%;
      top: 40%;
      animation: blubb-4 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(12) {
      width: 55px;
      height: 55px;
      right: 22%;
      top: 30%;
      animation: blubb-3 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(13) {
      width: 50px;
      height: 50px;
      right: 37%;
      top: 20%;
      animation: blubb-2 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(14) {
      width: 60px;
      height: 60px;
      right: 25%;
      top: 60%;
      animation: blubb-6 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
    &:nth-child(15) {
      width: 57px;
      height: 57px;
      right: 10%;
      top: 40%;
      animation: blubb-4 $animation-duration infinite;
      animation-timing-function: $animation-type;
      animation-delay: $animation-delay * random($limit: 10);
    }
  }
  .body {
    display: table-cell;
    vertical-align: middle;
    width: 100%;
    position: relative;

    .head {
      display: table;
      width: 250px;
      height: 250px;
      margin: auto;
      background: transparent;
      border: 15px solid $color-fourth;
      border-bottom-color: transparent;
      border-radius: 50%;
      animation: pulsating-head 2s infinite;

      &:before {
      }
      .left-eye {
        width: 55px;
        height: 50px;
        margin-left: 40px;
        margin-top: 80px;
        display: inline-block;
        position: absolute;
        border: 7.5px solid #69bcf3;
        border-radius: 50%;
        border-bottom-color: transparent;
        border-left-color: transparent;
        border-right-color: transparent;
      }
      .right-eye {
        width: 55px;
        height: 50px;
        margin-left: 140px;
        margin-top: 80px;
        display: inline-block;
        position: absolute;
        border: 7.5px solid #69bcf3;
        border-radius: 50%;
        border-bottom-color: transparent;
        border-left-color: transparent;
        border-right-color: transparent;
      }
      .mouth {
        width: 55px;
        height: 50px;
        margin-left: 90px;
        margin-top: 100px;
        display: inline-block;
        position: absolute;
        border: 7.5px solid #69bcf3;
        border-radius: 50%;
        border-top-color: transparent;
        border-left-color: transparent;
        border-right-color: transparent;
      }
    }
    .feet {
      display: table;
      position: relative;
      min-width: 250px;
      min-height: 250px;
      top: -45px;
      margin: auto;
      background: transparent;

      .first {
        display: inline-block;
        position: absolute;
        width: 40px;
        height: 115px;
        margin-top: -6px;
        margin-left: -3px;
        border: 15px solid #69bcf3;
        border-radius: 50%;
        border-top-color: transparent;
        border-top-width: 5px;
        border-top-left-radius: 0%;
        border-top-right-radius: 0;
        transform: rotate(25deg);
        box-shadow: 0px 40px 120px -15px #fff;
        animation: pulsating 2s infinite;
      }
      .second {
        display: inline-block;
        position: absolute;
        width: 20px;
        height: 115px;
        margin-top: 15px;
        margin-left: 70px;
        border: 15px solid #69bcf3;
        border-radius: 50%;
        border-top-color: transparent;
        border-top-width: 5px;
        border-top-left-radius: 0%;
        border-top-right-radius: 0%;
        transform: rotate(10deg);
        box-shadow: 0px 40px 120px -15px #fff;
        animation: pulsating 2s infinite;

        &:before {
          content: "";
          position: absolute;
          left: -20.577px;
          top: -10px;
          width: 5px;
          height: 5px;
          border: 7.8px solid #69bcf3;
          border-radius: 50%;
          transform: rotate(7deg);
        }
        &:after {
          content: "";
          position: absolute;
          left: 20px;
          top: -10px;
          width: 5px;
          height: 5px;
          border: 6.99999px solid #69bcf3;
          border-radius: 50%;
          transform: rotate(0deg);
        }
      }
      .third {
        display: inline-block;
        position: absolute;
        width: 20px;
        height: 115px;
        margin-top: 15px;
        margin-left: 130px;
        border: 15px solid #69bcf3;
        border-radius: 50%;
        border-top-color: transparent;
        border-top-width: 5px;
        border-top-left-radius: 0%;
        border-top-right-radius: 0%;
        transform: rotate(-10deg);
        box-shadow: 0px 40px 120px -15px #fff;
        animation: pulsating 2s infinite;

        &:before {
          content: "";
          position: absolute;
          left: 20px;
          top: -10px;
          width: 5px;
          height: 5px;
          border: 7.8px solid #69bcf3;
          border-radius: 50%;
          transform: rotate(7deg);
        }
      }
      .fourth {
        display: inline-block;
        position: absolute;
        width: 40px;
        height: 115px;
        margin-top: -6px;
        margin-left: 183px;
        border: 15px solid #69bcf3;
        border-radius: 50%;
        border-top-color: transparent;
        border-top-width: 5px;
        border-top-left-radius: 0%;
        border-top-right-radius: 0;
        transform: rotate(-25deg);
        box-shadow: 0px 40px 120px -15px #fff;
        animation: pulsating 2s infinite;
      }
    }
  }
}
@keyframes pulsating {
  0% {
    box-shadow: 0px 40px 120px -25px #fff;
    height: 115px;
  }
  50% {
    box-shadow: 0px 40px 120px -15px #fff;
    height: 120px;
  }
  100% {
    box-shadow: 0px 40px 120px -25px #fff;
    height: 115px;
  }
}
@keyframes pulsating-head {
  0% {
    min-height: 250px;
  }
  50% {
    min-height: 255px;
  }
  100% {
    min-height: 250px;
  }
}
@keyframes blubb-1 {
  0% {
    top: 10%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-2 {
  0% {
    top: 20%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-3 {
  0% {
    top: 30%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-4 {
  0% {
    top: 40%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-5 {
  0% {
    top: 50%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-6 {
  0% {
    top: 60%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-7 {
  0% {
    top: 70%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
@keyframes blubb-8 {
  0% {
    top: 80%;
    opacity: 0.5;
  }
  50% {
    top: 0%;
    opacity: 0.75;
  }
  100% {
    top: 0;
    opacity: 0;
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.