Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                - for (var i = 1; i <= 25; i++) {
  div(class='btn btn' + i) Button
- }

.message &check; Made by 
  a(href="https://codepen.io/pieter-biesemans/" target="_blank" title="&check; check out my other work") Pieter Biesemans</a> with &#9749;, &#128420; &amp; &#8986;
              
            
!

CSS

              
                $mainColor1: #306B34;
$mainColor2: #82D173;
$mainColor3: #42113C;
$mainColor4: #4D243D;
$accentColor: #BB0A21;
$textColor: #FFFFFF;
$bgColor: #111111;

$linear         : cubic-bezier(0.250, 0.250, 0.750, 0.750);
$ease           : cubic-bezier(0.250, 0.100, 0.250, 1.000);
$easeIn         : cubic-bezier(0.420, 0.000, 1.000, 1.000);
$easeOut        : cubic-bezier(0.000, 0.000, 0.580, 1.000);
$easeInOut      : cubic-bezier(0.420, 0.000, 0.580, 1.000);
$easeInQuad     : cubic-bezier(0.550, 0.085, 0.680, 0.530);
$easeInCubic    : cubic-bezier(0.550, 0.055, 0.675, 0.190);
$easeInQuart    : cubic-bezier(0.895, 0.030, 0.685, 0.220);
$easeInQuint    : cubic-bezier(0.755, 0.050, 0.855, 0.060);
$easeInSine     : cubic-bezier(0.470, 0.000, 0.745, 0.715);
$easeInExpo     : cubic-bezier(0.950, 0.050, 0.795, 0.035);
$easeInCirc     : cubic-bezier(0.600, 0.040, 0.980, 0.335);
$easeInBack     : cubic-bezier(0.600, -0.280, 0.735, 0.045);
$easeOutQuad    : cubic-bezier(0.250, 0.460, 0.450, 0.940);
$easeOutCubic   : cubic-bezier(0.215, 0.610, 0.355, 1.000);
$easeOutQuart   : cubic-bezier(0.165, 0.840, 0.440, 1.000);
$easeOutQuint   : cubic-bezier(0.230, 1.000, 0.320, 1.000);
$easeOutSine    : cubic-bezier(0.390, 0.575, 0.565, 1.000);
$easeOutExpo    : cubic-bezier(0.190, 1.000, 0.220, 1.000);
$easeOutCirc    : cubic-bezier(0.075, 0.820, 0.165, 1.000);
$easeOutBack    : cubic-bezier(0.175, 0.885, 0.320, 1.275);
$easeInOutQuad  : cubic-bezier(0.455, 0.030, 0.515, 0.955);
$easeInOutCubic : cubic-bezier(0.645, 0.045, 0.355, 1.000);
$easeInOutQuart : cubic-bezier(0.770, 0.000, 0.175, 1.000);
$easeInOutQuint : cubic-bezier(0.860, 0.000, 0.070, 1.000);
$easeInOutSine  : cubic-bezier(0.445, 0.050, 0.550, 0.950);
$easeInOutExpo  : cubic-bezier(1.000, 0.000, 0.000, 1.000);
$easeInOutCirc  : cubic-bezier(0.785, 0.135, 0.150, 0.860);
$easeInOutBack  : cubic-bezier(0.680, -0.550, 0.265, 1.550);

@mixin horizontalcenter(){
  left: 50%;
  transform: translatex(-50%);
}

@mixin verticalcenter(){
  top: 50%;
  transform: translatey(-50%);
}

@mixin centercenter(){
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

div{
  display: inline-block;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  overflow: hidden;
  &:before, &:after{
    content: '';
    position: absolute;
    display: block;
    box-sizing: border-box;
    top: 0;
    left: 0;
  }
}

body{
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  margin: 0;
  padding: 0;
  font-size: 2vw;
  font-family: 'Source Serif Pro', serif;
  font-family: 'Source Sans Pro', sans-serif;
  color: $textColor;
  background: $bgColor;
}

.btn{
  position: relative;
  width: 15vw;
  height: 4vw;
  margin: 2vw;
  text-align: center;
  line-height: 4vw;
  cursor: pointer;
  
  &1{
    border: 0.1vw solid $mainColor1;
    &:after{
      width: 100%;
      height: 100%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s ease;
      transform-origin: center;
      transform: scale(0);
    }
    &:hover:after{
      transform: scale(1);
    }
  }
  
  &2{
    border: 0.1vw solid $mainColor1;
    &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s ease;
      transform-origin: center;
      transform: scale(0);
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1);
    }
  }
  
  &3{
    border: 0.1vw solid $mainColor1;
    &:after{
      width: 100%;
      height: 100%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s ease;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:after{
      transform: scale(1) rotate(180deg);
    }
  }
  
  &4{
    border: 0.1vw solid $mainColor1;
    &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s ease;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1) rotate(180deg);
    }
  }
  
  &5{
    border: 0.1vw solid $mainColor1;
    &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOutBack;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1) rotate(180deg);
    }
  }
  
  &6{
    border: 0.5vw solid $mainColor3;
    line-height: 3vw;
    transition: all 0.5s 0.5s $ease;
    &:hover{
      border: 0 solid $mainColor3;
      line-height: 4vw;
    }
    &:after{
      width: 100%;
      height: 100%;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOut;
      transform-origin: center;
      transform: scale(0);
    }
    &:hover:after{
      transform: scale(1);
    }
  }
  
  &7{
    border: 0.5vw solid $mainColor3;
    line-height: 3vw;
    transition: all 0.5s 0.5s $ease;
    &:hover{
      border: 0 solid $mainColor3;
      line-height: 4vw;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.25s $easeInOut, height 0.5s $easeInOut, left 0.25s $easeInOut, top 0.5s $easeInOut;
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  }
  
  &8{
    border: 0.5vw solid $mainColor3;
    line-height: 3vw;
    transition: all 0.5s 0.5s $ease;
    &:hover{
      border: 0 solid $mainColor3;
      line-height: 4vw;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.25s $easeInOut, height 0.5s $easeInOut, left 0.25s $easeInOut, top 0.5s $easeInOut, transform 0.5s $easeInOut;
      transform-origin: center;
      transform: rotate(0);
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      transform: rotate(180deg);
    }
  }
  
  &9{
    border: 0.5vw solid $mainColor3;
    line-height: 3vw;
    transition: all 0.5s $ease;
    &:hover{
      border: 0 solid $mainColor3;
      line-height: 4vw;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.25s $easeInOut, height 0.5s $easeInOut, left 0.25s $easeInOut, top 0.5s $easeInOut, transform 0.5s $easeInOut;
      transform-origin: center;
      transform: rotate(0);
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0;
      transform: rotate(180deg);
    }
  }
  
  &10{
    border: 0.5vw solid $mainColor3;
    line-height: 3vw;
    transition: all 0.5s $ease;
    &:hover{
      border: 0 solid $mainColor3;
      line-height: 4vw;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.25s $easeInOutBack, height 0.5s $easeInOutBack, left 0.25s $easeInOutBack, top 0.5s $easeInOutBack, transform 0.5s $easeInOutBack;
      transform-origin: center;
      transform: rotate(0);
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0;
      transform: rotate(180deg);
    }
  }
  
  &11{
    border: 0.2vw solid $mainColor2;
    border-radius: 0;
    line-height: 3.6vw;
    transition: all 0.5s $ease;
    &:hover{
      border-radius: 1vw;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor1;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOut;
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0.25vw;
    }
  }
  
  &12{
    border: 0.2vw solid $mainColor2;
    border-radius: 0;
    line-height: 3.6vw;
    transition: all 0.5s $ease;
    &:hover{
      border-color: transparent;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor2;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOut;
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0.25vw;
    }
  }
  
  &13{
    border: 0.2vw solid $mainColor2;
    border-radius: 0;
    line-height: 3.6vw;
    transition: all 0.5s $ease;
    &:hover{
      border-color: transparent;
    }
    &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor1;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOut;
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0.25vw;
    }
  }
  
  &14{
    line-height: 1.5vw;
    transition: all 0.5s $easeInOut;
    &:hover{
      border-color: transparent;
      line-height: 4vw;
    }
    &:after{
      top: 0;
      left: 50%;
      width: 0;
      height: 0;
      border-radius: 50%;
      background:  $mainColor1;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOut;
    }
    &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 0.25vw;
    }
  }
  
  &15{
    border: 0.1vw solid $mainColor2;
    transition: all 0.5s $easeInOutBack;
    background:  $mainColor1;
    &:hover{
      border-width: 1.5vw 3vw;
      line-height: 1vw;
    }
  }
  
  &16{
    border: 0.1vw solid $mainColor1;
    &:before, &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor3;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOutBack;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:before{
      border-radius: 0;
      transform: scale(1) rotate(-180deg);
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1) rotate(180deg);
    }
  }
  
  &17{
    border: 0.1vw solid $mainColor1;
    &:before, &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOutBack;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:before{
      border-radius: 0;
      transform: scale(1) rotate(-180deg);
    }
    &:after{
      background:  $mainColor3;
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1) rotate(180deg);
    }
  }
  
  &18{
    border: 0.1vw solid $mainColor1;
    &:before, &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.25s 0.25s $easeInOutBack, height 0.75s $easeInOutBack, left 0.25s 0.25s $easeInOutBack, top 0.75s $easeInOutBack;
    }
    &:after{
      transition: width 0.75s $easeInOutBack, height 0.25s 0.25s $easeInOutBack, left 0.75s $easeInOutBack, top 0.25s 0.25s $easeInOutBack, transform 0.5s $easeInOutBack;
      background: $mainColor3;
    }
    &:hover:before, &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  }
  
  &19{
    border: 0.1vw solid $mainColor1;
    &:before, &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: width 0.5s 0.75s $easeInOutBack, height 0.75s $easeInOutBack, left 0.5s 0.75s $easeInOutBack, top 0.75s $easeInOutBack;
    }
    &:after{
      transition: width 0.25s $easeInOutBack, height 0.25s 0.25s $easeInOutBack, left 0.25s $easeInOutBack, top 0.25s 0.25s $easeInOutBack;
      background: $mainColor3;
    }
    &:hover:before, &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  }
  
  &20{
    border: 0.1vw solid $mainColor1;
    &:before, &:after{
      top: 50%;
      left: 50%;
      width: 0;
      height: 0;
      background:  $mainColor4;
      mix-blend-mode: lighten;
      transition: all 0.5s $easeInOutBack;
      transform: rotate(0);
    }
    &:after{
      background: $mainColor3;
    } 
    &:hover:before, &:hover:after{
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      transform: rotate(170deg);
    }
    &:hover:after{
      transform: rotate(-170deg);
    }
  }
  
  &21{
    background: $mainColor1;
    transition: all 0.5s $easeInOut;
    &:after{
      top: 0;
      left: 0;
      width: 0;
      height: 100%;
      mix-blend-mode: lighten;
      background: $mainColor2;
      transition: all 0.5s $easeInOut;
    }
    &:hover{
      background: transparent;
    }
    &:hover:after{
      width: 100%;
      height: 100%;
    }
  }
  
  &22{
    background: $mainColor1;
    transition: all 0.5s $easeInOut;
    &:after{
      top: 0;
      left: 100%;
      width: 0;
      height: 100%;
      mix-blend-mode: lighten;
      background: $mainColor2;
      transition: all 0.5s $easeInOut;
    }
    &:hover{
      background: transparent;
    }
    &:hover:after{
      width: 100%;
      height: 100%;
      left: 0;
    }
  }
  
  &23{
    background: $mainColor1;
    transition: all 0.5s $easeInOut;
    &:before, &:after{
      top: 0;
      width: 0;
      height: 100%;
      mix-blend-mode: overlay;
      transition: all 0.5s $easeInOut;
    }
    &:before{
      left: 0;
      width: 0;
      background: $mainColor4;
    }
    &:after{
      left: 100%;
      width: 0;
      background: $mainColor3;
    }
    &:hover:before{
      width: 100%;
    }
    &:hover:after{
      width: 100%;
      left: 0;
    }
  }
  
  &24{
    background: $mainColor1;
    transition: all 0.5s $easeInOut;
    filter: hue-rotate(0);
    &:hover{
      filter: hue-rotate(360deg);
    }
    &:before, &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor4;
      mix-blend-mode: overlay;
      transition: all 0.5s $easeInOutBack;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:before{
      border-radius: 0;
      transform: scale(1) rotate(-180deg);
    }
    &:after{
      background:  $mainColor3;
    }
    &:hover:after{
      border-radius: 0;
      transform: scale(1) rotate(180deg);
    }
  }
  
  &25{
    background: $mainColor1;
    transition: all 0.5s $easeInOut;
    filter: hue-rotate(0);
    &:hover{
      filter: hue-rotate(360deg);
    }
    &:before, &:after{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      background:  $mainColor4;
      mix-blend-mode: overlay;
      transition: all 0.5s $easeInOutBack;
      transform-origin: center;
      transform: scale(0) rotate(0);
    }
    &:hover:before{
      transform: scale(1) rotate(-180deg);
    }
    &:after{
      background:  $mainColor3;
    }
    &:hover:after{
      border-radius: 2vw;
      transform: scale(1) rotate(180deg);
    }
  }
  
}

.message{
  position: absolute;
  right:  0.5vw;
  bottom: 1vw;
  max-width: 30vw;
  font-size: 0.5em;
  font-family: "Open Sans", sans-serif;

  & a{
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid #444;
    &:hover{
      border-width: 3px;
    }
  }

}
              
            
!

JS

              
                /*
This Codepen is in the Public Domain.
You can use it for whatever purpose you like, except evil.
*/
              
            
!
999px

Console