.bar
.bar 
.bar
.bar
.bar

.container
  .heading
    h1 Button Animations You Probably Shouldn't Use

  .buttons
    .btn.btn1
      span.circle
      span.text Wowzers
    .btn.btn2
      span.text Kabang
    .btn.btn3
      span.text Kerplow
    .btn.btn4
      span.text Boinkers
      span.left
      span.right
    .btn.btn5
      span.text Ohhh My
      
.me
  a(href="https://github.com/cmdeveloped" target="_blank")
    i(class='fab fa-github')
  a(href="https://twitter.com/collinscode_" target="_blank")
    i(class='fab fa-twitter')
  a(href="https://codepen.io/collinscode" target="_blank")
    i(class='fab fa-codepen')
  a(href="https://linkedin.com/in/cmdeveloped" target="_blank")
    i(class='fab fa-linkedin')
View Compiled
=gradient($a, $b, $c)
  background: $b
  background: linear-gradient(to right, $a, $b, $c)
  
=flex($a, $b)
  display: flex
  align-items: $a
  justify-content: $b
  
=font
  font-family: 'Raleway', sans-serif
  font-weight: 300
  
$color1: rgba(43, 45, 66, 1)
$color2: rgba(141, 153, 174, 1)
$color3: rgba(237, 242, 244, 1)
$color4: rgba(239, 35, 60, 1)
$color5: rgba(217, 4, 41, 1)
 
*
  backface-visibility: hidden

html
  height: 100vh
  min-height: 100vh
  body
    height: 100%
    margin: 0
    display: flex
    +gradient($color1, $color2, $color3)
    .container
      position: absolute
      top: 50%
      left: 50%
      transform: translateX(-50%) translateY(-50%)
      background: #fff
      width: 75rem
      padding: 4rem
      box-shadow: 2px 3px 6px rgba(0,0,0,0.2)
    .me
      position: absolute
      bottom: 2rem
      left: 50%
      transform: translateX(-50%)
      padding: 2rem
      background: white
      box-shadow: 2px 3px 6px rgba(0,0,0,0.2)
      .fab
        font-size: 1.75rem
        margin: 0 1rem
        color: $color2
        transition: 0.5s
        &:hover
          color: $color1
    .heading
      text-align: center
      h1
        color: $color2
        +font
        font-size: 2.5rem
    .buttons
      +flex(center, center)
      .btn
        +flex(center, center)
        +font
        padding: 1rem 2rem
        margin: 0 1rem
        cursor: pointer
        position: relative
        overflow: hidden
        &:nth-child(1)
          +flex(center, center)
          border: 2px solid $color2
          padding: 1rem 2rem 1rem 3rem
          .circle
            background-color: $color2
            height: 1rem
            width: 1rem
            border-radius: 100%
            margin-right: 1rem
            position: absolute
            left: 1rem
            z-index: -1
            transition: 0.25s
          .text
            position: relative
            left: 0
            transition: 0.5s
          &:hover
            color: white
            .circle
              transform: scale(25)
            .text
              left: -0.5rem
              
        &:nth-child(2)
          padding: 0
          .text
            border-top: 2px solid $color2
            border-bottom: 2px solid $color2
            padding: 1rem 2rem
            position: relative
            z-index: -1
            transition: 0.25s
          &:after, &:before
            content: ''
            position: absolute
            z-index: 2
            height: 2px
            width: 0
            left: 50%
            background-color: $color1
            transition: 0.25s
          &:after
            bottom: 0
          &:before
            top: 0
          &:hover
            .text
              border-color: transparent
            &:before, &:after
              left: 0
              width: 100%
            
        &:nth-child(3)
          .text
            color: $color2
            transition: 0.5s
          &:after, &:before
            content: ''
            position: absolute
            z-index: 2
            height: 2px
            width: 100%
            left: 0
            transform: translateX(-100%)
            background-color: $color1
            transition: 0.5s
          &:before
            top: 0
          &:after
            bottom: 0
          &:hover
            .text
              color: $color1
            &:before, &:after
              transform: translateX(100%)
       
        &:nth-child(4)
          .text
            transition: 0.5s
          .left, .right, &:before, &:after
            position: absolute
            left: 50%
            top: 50%
            height: 0
            width: 0
            background: $color4
            transition: 0.5s
          &:before, &:after
            content: ''
          &:hover
            .text
              color: $color4
            .left, .right
              top: 0
              width: 2px
              height: 100%
            .left
              left: 0
            .right
              left: calc(100% - 2px)
            &:before, &:after
              height: 2px
              width: 100%
              left: 0
            &:before
              top: 0
            &:after
              top: calc(100% - 2px)
            
        &:nth-child(5)
          .text
            transition: 0.5s
          &:before, &:after
            content: ''
            position: absolute
            z-index: -1
            height: 0
            width: 0
            background: $color5
            top: 50%
            left: 50%
            border-radius: 100%
          &:hover
            .text
              color: white
            &:before, &:after
              transform: translateY(-50%) translateX(-50%)
            &:before
              animation: 2s noway forwards
            &:after
              animation: 0.5s wow 2s forwards

@keyframes wow
  to
    height: 20rem
    width: 20rem
    
@keyframes noway
  to
    height: 1rem
    width: 1rem
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js