<div class="jelly-container">
  <div class="bubble-1"></div>
  <div class="bubble-2"></div>
  <div class="bubble-3"></div>
  <div class="bubble-4"></div>
  <div class="bubble-5"></div>
  <div class="bubble-6"></div>
  <div class="bubble-7"></div>
  <div class="bubble-8"></div>
  <div class="bubble-9"></div>
  <div class="bubble-10"></div>
  <div class="jelly-wrapper">
    <div class="jelly-hair"></div>
    <div class="jelly-body">
      <div class="jelly-inner">
        <div class="jelly-eyes"></div>
        <div class="jelly-mouth"></div>
        <div class="jelly-hands"></div>
      </div>
    </div>
    <div class="jelly-tentacle-1"></div>
    <div class="jelly-tentacle-2"></div>
    <div class="jelly-tentacle-3"></div>
    <div class="jelly-tentacle-4"></div>
    <div class="jelly-tentacle-5"></div>
  </div>
  <div class="jelly-shadow"></div>
  <div class="bubble-11"></div>
  <div class="bubble-12"></div>
  <div class="bubble-13"></div>
  <div class="bubble-14"></div>
  <div class="bubble-15"></div>
  <div class="bubble-16"></div>
  <div class="bubble-17"></div>
  <div class="bubble-18"></div>
  <div class="bubble-19"></div>
  <div class="bubble-20"></div>
</div>

body{
  background-color: #DCDCDC;
}

.jelly-container {
  width: 100%;
  position: relative;
  height: 500px ;
  overflow: hidden;
  background: linear-gradient(to bottom, rgba(0, 141, 210, 0.63) 0%, rgba(0, 0, 0, 0) 100% );
}

.jelly-wrapper{
  width: 265px;
  position: absolute;
  transform: translate3D(-50%, -75%, 0);
  animation: jelly-movement 10s infinite linear;
}

.jelly-hair{
    height: 75px;
    width: 100px;
    background: linear-gradient(to bottom, rgba(239,137,26,1) 0%,rgba(239,137,26,1) 20%, rgba(235,242,138,1) 100% ); /* W3C */;
    position: absolute;
    left: 29%;
    transform: rotate3d(0, 1, 0, 180deg) translate3d(28%, -15px, 0) rotate3d(0, 0, 1, 75deg);
    border-radius: 25px;
    animation: hair-movement 10s infinite linear;
}

.jelly-body {
  background: linear-gradient(to bottom, rgba(0,141,210,1) 0%, rgba(235,242,138,1) 100% ); /* W3C */;
  position: relative;
  height: 250px;
  width: 100%;
  overflow: hidden;
  z-index: 1;
  animation: head-movement 10s infinite linear;
}

.jelly-inner {
  position: absolute;
    left: 50%;
    top: 35%;
    animation: facing-movement 10s infinite linear;
}

%jelly-eye{
  content: '';
    position: absolute;
    height: 15px;
    bottom: -25px;
    width: 15px;
    border-radius: 50%;
    background-color: #FFF;
    animation: eyes-blink 3.5s infinite linear;
}

.jelly-eyes {
  position: absolute;
    top: -40px;
    animation: eyes-movement 10s infinite linear;
  
  &:before{
    @extend %jelly-eye;
    left: 60px;
  }
    
    &:after{
      @extend %jelly-eye;
      left: -70px;
    }


}

%jelly-hand{
  content: '';
  position: absolute;
  height: 50px;
  width: 45px;
  border-top:0;  
  border-radius: 0 0 50% 50%;
  box-shadow: 0px 5px 6px #3B949B;
}

.jelly-hands{
  position: absolute;
    top: 65px;
  
  &:before{
    @extend %jelly-hand;
    left: 110px;
  }
    
    &:after{
      @extend %jelly-hand;
      left: -155px;
    }
}

.jelly-mouth {
  position: absolute;
    height: 80px;
    width: 200px;
    left: 50%;
    top: 35%;
    transform: translate3D(-50%, 0, 0);
    background-color: #F4CFD1;
    border-radius: 30px;
    box-shadow: 0px 0px 7px #808080;

    &:after{
    content: '';
      position: absolute;
      height: 3%;
      width: 60%;
      background-color: #FF9393;
      left: 50%;
      top: 50%;
      transform: translate3D(-50%, 0, 0);
      box-shadow: 0 0 3px #FF6B6B;
      animation: mouth-movement 10s infinite linear;
    }
}

div[class^="jelly-tentacle-"] {
  height: 50px;
  width: 50px;
  position: absolute;
  background-color:rgba(235,242,138,1);
  border-radius: 0 0 25px 25px;
  box-shadow: 0px 2.5px 0px #008D9B;
}

.jelly-tentacle-1{
  left: 0%;
  animation: tentacle-animation 1s infinite cubic-bezier(0.46, 0.2, 0.53, 0.92) -.2s;
}

.jelly-tentacle-2{
  left: 25%;
  transform: translate3D(-25%, 0, 0);
  animation: tentacle-animation 1s infinite cubic-bezier(0.46, 0.2, 0.53, 0.92) -.4s;
}

.jelly-tentacle-3{
  left: 50%;
  transform: translate3D(-50%, 0, 0);
  animation: tentacle-animation 1s infinite cubic-bezier(0.46, 0.2, 0.53, 0.92) -.1s;
}

.jelly-tentacle-4{  
  right: 25%;
  transform: translate3D(25%, 0, 0);
  animation: tentacle-animation 1s infinite cubic-bezier(0.46, 0.2, 0.53, 0.92) -.7s;
}

.jelly-tentacle-5{
  right: 0%;
  animation: tentacle-animation 1s infinite cubic-bezier(0.46, 0.2, 0.53, 0.92) -.3s;
}

.jelly-shadow{
  position: absolute;
  height:15px;
  border-radius: 50%;
    background-color: rgba(134, 134, 134, 0.23);
    box-shadow: 0 0 10px rgba(134, 134, 134, 0.23);
  bottom: 5%;
  transform: translate3d(-50%, 0, 0);
  animation: shadow-movement 10s infinite linear;
}

div[class^="bubble-"] {
  height: 1px;
  width: 1px;
  position: absolute;
  background-color:rgba(0, 141, 210, 0.3);
  border-radius: 50%;
  transform: translateX(-50%);

  &:after {
    content: '';
      position: absolute;
      height: 85%;
      width: 85%;
      border-top: 1px solid rgba(255, 255, 255, 0.63);
      border-radius: 50%;
      left: 50%;
      top: 50%;
      transform: translate3d(-50%, -50%, 0) rotateZ(-45deg);
  }
}

.bubble-1{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-2{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-3{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-4{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-5{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-6{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-7{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-8{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-9{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-10{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 4s infinite ease-in random(300)*-.01s;
}
.bubble-11{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-12{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-13{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-14{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-15{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-16{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-17{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-18{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-19{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}
.bubble-20{
  bottom: random(10) + 1px;
  left: random(99) + 1%; 
  animation: bubble-movement 3s infinite ease-in random(300)*-.01s;
}



@keyframes jelly-movement{
  0%   {
    top:55%;
    left: 50%;
  }
  5%   {
    top:50%;
  }
  10%  {
    top:55%;
  }
  15%  {
    top:50%;
  }
  20%  {
    top:55%;
  }
  25%  {
    top:50%;
    left: calc(100% - 135px);
  }
  30%  {
    top:55%;
  }
  35%  {
    top:50%;
  }
  40%  {
    top:55%;
  }
  45%  {
    top:50%;
  }
  50%  {
    top:55%;
    left: 50%;
  }
  55%  {
    top:50%;
  }
  60%  {
    top:55%;
  }
  65%  {
    top:50%;
  }
  70%  {
    top:55%;
  }
  75%  {
    top:50%;
    left: 135px;
  }
  80%  {
    top:55%;
  }
  85%  {
    top:50%;
  }
  90%  {
    top:55%;
  }
  95%  {
    top:50%;
  }
  100% {
    top:55%;
    left: 50%;
  }
}

@keyframes tentacle-animation{
  0%   {bottom:-8% ;}
  50%  {bottom:-20% ;}
  100% {bottom:-8% ;}
}

@keyframes facing-movement{
  0%   {left: 60%;}
  20%  {left: 60%;}
  25%  {left: 50%;} 
  30%  {left: 40%;}
  70%  {left: 40%;}
  75%  {left: 50%;} 
  80%  {left: 60%;}
  100% {left: 60%;}
}

@keyframes mouth-movement{
  0%   {left: 52%;}
  20%  {left: 52%;}
  25%  {left: 50%;} 
  30%  {left: 46%;}
  70%  {left: 46%;}
  75%  {left: 50%;} 
  80%  {left: 52%;}
  100% {left: 52%;}
}

@keyframes eyes-movement{
  0%   {left: 5px;}
  20%  {left: 5px;} 
  25%  {left: 0px;}
  30%  {left: -5px;}
  70%  {left: -5px;} 
  75%  {left: 0px;}
  80%  {left: 5px;}
  100% {left: 5px;}
}

@keyframes head-movement{
  0%   {
    border-top-right-radius: 70px;
    border-top-left-radius:  90px;
  }
  20%  {
    border-top-right-radius: 70px;
    border-top-left-radius:  90px;
  }
  25%  {
    border-top-right-radius: 80px;
    border-top-left-radius:  80px;
  } 
  30%  {
    border-top-right-radius: 90px;
    border-top-left-radius:  70px;
  }
  70%  {
    border-top-right-radius: 90px;
    border-top-left-radius:  70px;
  }
  75%  {
    border-top-right-radius: 80px;
    border-top-left-radius:  80px;
  } 
  80%  {
    border-top-right-radius: 70px;
    border-top-left-radius:  90px;
  }
  100% {
    border-top-right-radius: 70px;
    border-top-left-radius:  90px;
  }
}

@keyframes hair-movement{
  0%   {transform: rotate3d(0, 1, 0, 180deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
  20%  {transform: rotate3d(0, 1, 0, 180deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
  25%  {transform: rotate3d(0, 1, 0, 90deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);} 
  30%  {transform: rotate3d(0, 1, 0, 0deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
  70%  {transform: rotate3d(0, 1, 0, 0deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
  75%  {transform: rotate3d(0, 1, 0, 90deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);} 
  80%  {transform: rotate3d(0, 1, 0, 180deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
  100% {transform: rotate3d(0, 1, 0, 180deg) translate3d(28%, -2px, 0) rotate3d(0, 0, 1, 75deg);}
}

@keyframes shadow-movement{
  0%   {
    width:250px;
    left: 50%;
  }
  5%   {
    width:210px;
  }
  10%  {
    width:250px;
  }
  15%  {
    width:210px;
  }
  20%  {
    width:250px;
  }
  25%  {
    width:210px;
    left: calc(100% - 135px); 
  }
  30%  {
    width:250px;
  }
  35%  {
    width:210px;
  }
  40%  {
    width:250px;
  }
  45%  {
    width:210px;
  }
  50%  {
    width:250px;
    left: 50%;
  }
  55%  {
    width:210px;
  }
  60%  {
    width:250px;
  }
  65%  {
    width:210px;
  }
  70%  {
    width:250px;
  }
  75%  {
    width:210px;
    left: 135px;
  }
  80%  {
    width:250px;
  }
  85%  {
    width:210px;
  }
  90%  {
    width:250px;
  }
  95%  {
    width:210px;
  }
  100% {
    width:250px;
    left: 50%;
  }
}

@keyframes eyes-blink{
  0%   {height:15px}
  3%   {height:1px}
  5%   {height:15px}
  100% {height:15px}
}

@keyframes bubble-movement{
  0%   {
    transform: translate3d(-50%, 0, 0);
    height: 1px;
    width: 1px;
    }
  100% {
    transform: translate3d(-50%, -500px, 0);
    height: 75px;
    width: 75px;
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.