Creative Animated Button

by Hemant Sharma

HTML

<a href="#">
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  Button
</a>

SCSS

* {
  margin: 0;
  padding: 0;
  background: #0c002b;
  font-family: sans-serif;
}

a {
  padding: 30px 60px;
  color: #1670f0;
  font-size: 30px;
  outline: none;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
  letter-spacing: 3px;
  text-decoration: none;
  text-transform: uppercase;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
  overflow: hidden;

  &::before {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    bottom: 2px;
    width: 50%;
    background: rgba(255, 255, 255, 0.05);

  }

  span:nth-child(1) {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(to right, #0c002b, #1779ff);
    animation: animation1 2s linear infinite;
  }

  @keyframes animation1 {
    0%{ transform: translateX(-100%); }
    100%{ transform: translateX(100%); }
  }

  span:nth-child(2) {
    position: absolute;
    right: 0;
    top: 0;
    width: 2px;
    height: 100%;
    background: linear-gradient(to bottom, #0c002b, #1779ff);
    animation: animation2 2s linear infinite;
    animation-delay: 1s;
  }

  @keyframes animation2 {
    0%{ transform: translateY(-100%); }
    100%{ transform: translateY(100%); }
  }

  span:nth-child(3) {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(to left, #0c002b, #1779ff);
    animation: animation3 2s linear infinite;
  }

  @keyframes animation3 {
    0%{ transform: translateX(100%); }
    100%{ transform: translateX(-100%); }
  }

  span:nth-child(4) {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 2px;
    height: 100%;
    background: linear-gradient(to top, #0c002b, #1779ff);
    animation: animation4 2s linear 1s infinite;
  }

  @keyframes animation4 {
    0%{ transform: translateY(100%); }
    100%{ transform: translateY(-100%); }
  }

}