<div class="header">
  <h1>Wavy Loading Animations</h1>
  <h4>By: <a href="http://kylebrumm.com" target="_blank">Kyle Brumm</a></h4>
</div>

<div class="shaft-load">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load2">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load3">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load4">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load5">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load6">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>


<div class="shaft-load7">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load8">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load9">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load10">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>

<div class="shaft-load11">
  <div class="shaft1"></div>
  <div class="shaft2"></div>
  <div class="shaft3"></div>
  <div class="shaft4"></div>
  <div class="shaft5"></div>
  <div class="shaft6"></div>
  <div class="shaft7"></div>
  <div class="shaft8"></div>
  <div class="shaft9"></div>
  <div class="shaft10"></div>
</div>
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400|Raleway:300);

@function random-color($min: 0, $max: 255, $alpha: 1, $red: null, $green: null, $blue: null) {
    @if $min < 0 {
        $min: -1;
    } @else {
        $min: $min - 1;
    }
    @if $max > 255 {
        $max: 256;
    } @else {
        $max: $max + 1;
    }

    $range: $max - $min;
    @if not $red { $red: random($range) + $min; }
    @if not $green { $green: random($range) + $min; }
    @if not $blue { $blue: random($range) + $min; }

    @return rgba($red, $green, $blue, $alpha);
}


// ------------------------------------------------------


$primary: random-color($min: 100, $max: 200);
$primary-light: lighten($primary, 25%);
$primary-dark: darken($primary, 25%);
$black: #333333;
$bg-color: #eeeeee;
$max-width: 800px;

html {
  font-family: 'Open Sans', Helvetica, arial, sans-serif;
  text-align: center;
  background-color: $bg-color;
  color: $black;

  *,
  *:before,
  *:after {
    @include box-sizing(border-box);
  }
}

h1, h2, h3,
h4, h5, h6 {
    text-align: center;
    font-family: 'Raleway', 'Open Sans', sans-serif;
}

a {
  color: $black;
  text-decoration: none;
}


// ------------------------------------------------------


/* Universal styling */
[class^="shaft-load"] {
  margin: 50px auto;
  @include size(60px, 30px);
  > div {
    float: left;
    background: $primary-dark;
    height: 100%;
    width: 5px;
    margin-right: 1px;
    display: inline-block;
  }
  .shaft1 { @include animation-delay(0.05s); }
  .shaft2 { @include animation-delay(0.1s); }
  .shaft3 { @include animation-delay(0.15s); }
  .shaft4 { @include animation-delay(0.2s); }
  .shaft5 { @include animation-delay(0.25s); }
  .shaft6 { @include animation-delay(0.3s); }
  .shaft7 { @include animation-delay(0.35s); }
  .shaft8 { @include animation-delay(0.4s); }
  .shaft9 { @include animation-delay(0.45s); }
  .shaft10 { @include animation-delay(0.5s); }
}


/* Shaft 1 */
$shaft1: random-color($min: 100, $max: 200);
$shaft1-dark: darken($shaft1, 25%);
.shaft-load {
  > div {
    background-color: $shaft1-dark;
    @include animation(loading 1.5s infinite ease-in-out);
    @include transform(scaleY(0.05) translateX(-10px));
  }
}

@include keyframes(loading) {
  50% { 
    @include transform(scaleY(1.2) translateX(10px));
    background-color: $shaft1;
  }
}


/* Shaft 2 */
$shaft2: random-color($min: 100, $max: 200);
$shaft2-dark: darken($shaft2, 25%);
.shaft-load2 {
  > div {
    background-color: $shaft2-dark;
    @include animation(loading2 1.5s infinite ease-in-out);
    @include transform(scaleY(0.05) translateX(-5px));
  }
}

@include keyframes(loading2) {
  10% {
    background: $shaft2;
  }
  15% { 
    @include transform(scaleY(1.2) translateX(10px));
    background: $shaft2;
  }
  90%, 100% { 
    @include transform(scaleY(0.05) translateX(-5px));
  }
}


/* Shaft 3 */
$shaft3: random-color($min: 100, $max: 200);
$shaft3-dark: darken($shaft3, 25%);
.shaft-load3 {
  position: relative;
  @include square(100px);
  > div {
    background: transparent;
    border: 4px solid transparent;
    border-color: transparent transparent transparent $shaft3-dark;
    @include border-radius(100%);
    @include centerer;
    @include transform( translate(-50%, -50%) rotate(0));
    @include animation(loading3 2s infinite ease-in-out);
  }
  .shaft1 { @include animation-delay(0.1s); @include square(20px); }
  .shaft2 { @include animation-delay(0.2s); @include square(25px); }
  .shaft3 { @include animation-delay(0.3s); @include square(30px); }
  .shaft4 { @include animation-delay(0.4s); @include square(35px); }
  .shaft5 { @include animation-delay(0.5s); @include square(40px); }
  .shaft6 { @include animation-delay(0.6s); @include square(45px); }
  .shaft7 { @include animation-delay(0.7s); @include square(50px); }
  .shaft8 { @include animation-delay(0.8s); @include square(55px); }
  .shaft9 { @include animation-delay(0.9s); @include square(60px); }
  .shaft10 { @include animation-delay(1.0s); @include square(65px); }
}

@include keyframes(loading3) {
  50% {
    @include transform( translate(-50%, -50%) rotate(360deg));
    border-color: transparent transparent rgba($shaft3, 0.10) $shaft3;
  }
  75% {
    border-color: rgba($shaft3, 0.10) transparent transparent $shaft3;
  }
}


/* Shaft 4 */
$shaft4: random-color($min: 100, $max: 200);
$shaft4-dark: darken($shaft4, 25%);
.shaft-load4 {
  margin-top: 80px;
  width: 80px;
  > div {
    background-color: $shaft4-dark;
    margin-right: 0;
    @include animation(loading4 1.5s infinite ease-in-out);
    width: 8px;
    @include opacity(0);
    @include transform(scaleY(0.1));
  }
}

@include keyframes(loading4) {
  50% { 
    @include transform(scaleY(1.5));
    background: $shaft4;
    @include opacity(100);
  }
}


/* Shaft 5 */
$shaft5: random-color($min: 100, $max: 200);
$shaft5-dark: darken($shaft5, 25%);
$height-start5: 5px;
$height-end5: 40px;
.shaft-load5 {
  height: $height-end5;
  > div {
    background-color: $shaft5-dark;
    @include relative(null, null, 0);
    margin-top: $height-end5 - $height-start5;
    height: $height-start5;
    @include animation(loading5 1.5s infinite ease-in-out);
  }
  .shaft1 { @include animation-delay(-1.5s); }
  .shaft2 { @include animation-delay(-1.4s); }
  .shaft3 { @include animation-delay(-1.3s); }
  .shaft4 { @include animation-delay(-1.2s); }
  .shaft5 { @include animation-delay(-1.1s); }
  .shaft6 { @include animation-delay(-1.0s); }
  .shaft7 { @include animation-delay(-0.9s); }
  .shaft8 { @include animation-delay(-0.8s); }
  .shaft9 { @include animation-delay(-0.7s); }
  .shaft10 { @include animation-delay(-0.6s); }
  .shaft11 { @include animation-delay(-0.5s); }
}

@include keyframes(loading5) {
  50% {
    height: 100%;
    margin-top: 0;
    background: $shaft5;
  }
}


/* Shaft 6 */
$shaft6: random-color($min: 100, $max: 200);
$shaft6-dark: darken($shaft6, 25%);
$height-start6: 3px;
$height-end6: 40px;
.shaft-load6 {
  height: $height-end6;
  width: 90px;
  overflow: hidden;
  > div {
    background-color: $shaft6-dark;
    width: 8px;
    @include relative(null, null, -2px);
    margin-top: $height-end6 - $height-start6;
    height: $height-start6;
    transform: skewY(0deg);
    @include animation(loading6 1.5s infinite ease-in-out);
  }
}

@include keyframes(loading6) {
  25% {
    transform: skewY(25deg);;
  }
  50% {
    height: 100%;
    transform: skewY(0);
    margin-top: 0;
    background: $shaft6;
  }
  75% {
    transform: skewY(-25deg);;
  }
}


/* Shaft 7 */
$shaft7: random-color($min: 100, $max: 200);
$shaft7-dark: darken($shaft7, 25%);
.shaft-load7 {
  > div {
    background-color: $shaft7-dark;
    height: 2px;
    @include animation(loading7 1s infinite ease-in-out);
    @include translateY(-10px);
  }
}

@include keyframes(loading7) {
  50% {
    background: $shaft7;
    @include translateY(10px);
  }
}


/* Shaft 8 */
$shaft8: random-color($min: 100, $max: 200);
$shaft8-dark: darken($shaft8, 25%);
.shaft-load8 {
  width: 92px;
  > div {
    background-color: $shaft8-dark;
    height: 5px;
    margin-right: 0;
    @include animation(loading8 1s infinite ease-in-out);
  }
}

@include keyframes(loading8) {
  80% {
    background: $shaft8;
    margin-right: 5px;
    @include translateX(-10px);
  }
}


/* Shaft 9 */
$shaft9: random-color($min: 100, $max: 200);
$shaft9-dark: darken($shaft9, 25%);
.shaft-load9 {
  position: relative;
  @include square(100px);
  > div {
    background: transparent;
    @include opacity(0);
    border: 1px solid $shaft9-dark;
    @include border-radius(100%);
    @include centerer;
    @include translate(-50%, -50%);
    @include animation(loading9 1.2s infinite ease-in-out);
  }
  .shaft1 {
    background: $shaft9;
    @include animation-delay(0.1s);
    @include square(3px);
  }
  .shaft2 { @include animation-delay(0.2s); @include square(10px); }
  .shaft3 { @include animation-delay(0.3s); @include square(20px); }
  .shaft4 { @include animation-delay(0.4s); @include square(30px); }
  .shaft5 { @include animation-delay(0.5s); @include square(40px); }
  .shaft6 { @include animation-delay(0.6s); @include square(50px); }
  .shaft7 { @include animation-delay(0.7s); @include square(60px); }
  .shaft8 { @include animation-delay(0.8s); @include square(70px); }
  .shaft9 { @include animation-delay(0.9s); @include square(80px); }
  .shaft10 { @include animation-delay(1.0s); @include square(90px); }
}

@include keyframes(loading9) {
  25% {
    border-color: $shaft9;
    @include opacity(100);
  }
  50% {
    @include opacity(0);
  }
}


/* Shaft 10 */
$shaft10: random-color($min: 100, $max: 200);
$shaft10-dark: darken($shaft10, 25%);
.shaft-load10 {
  > div {
    background-color: $shaft10-dark;
    @include animation(loading10 1.5s infinite ease-in-out);
    @include transform(scaleY(0.05));
  }
  .shaft1 { height: 100%; }
  .shaft2 { height: 110%; }
  .shaft3 { height: 120%; }
  .shaft4 { height: 130%; }
  .shaft5 { height: 140%; }
  .shaft6 { height: 150%; }
  .shaft7 { height: 160%; }
  .shaft8 { height: 170%; }
  .shaft9 { height: 180%; }
  .shaft10 { height: 190%; }
}

@include keyframes(loading10) {
  50% { 
    @include transform(scaleY(1.2));
    background: $shaft10;
  }
}


/* Shaft 11 */
$shaft11: random-color($min: 100, $max: 200);
$shaft11-dark: darken($shaft11, 25%);
.shaft-load11 {
  position: relative;
  @include square(100px);
  > div {
    background: transparent;
    border: 8px solid transparent;
    border-color: rgba($shaft11-dark, 1) transparent;
    @include border-radius(100%);
    @include centerer;
    @include transform( translate(-50%, -50%) rotate(0));
    @include animation(loading11 2s infinite ease-in-out);
  }
  .shaft1 { @include animation-delay(0.1s); @include square(20px); }
  .shaft2 { @include animation-delay(0.2s); @include square(25px); }
  .shaft3 { @include animation-delay(0.3s); @include square(35px); }
  .shaft4 { @include animation-delay(0.4s); @include square(45px); }
  .shaft5 { @include animation-delay(0.5s); @include square(55px); }
  .shaft6 { @include animation-delay(0.6s); @include square(65px); }
  .shaft7 { @include animation-delay(0.7s); @include square(75px); }
  .shaft8 { @include animation-delay(0.8s); @include square(80px); }
  .shaft9 { @include animation-delay(0.9s); @include square(85px); }
  .shaft10 { @include animation-delay(1.0s); @include square(90px); }
}

@include keyframes(loading11) {
  50% {
    @include transform( translate(-50%, -50%) rotate(360deg));
    border-color: rgba($shaft11, 1) transparent;
  }
}
View Compiled

External CSS

  1. https://codepen.io/kjbrum/pen/ILEdn.scss

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js