Animated Borders

Animated Borders

by Nirvanachain

HTML

<div class="container">
  Text
</div>

CSS

.container, .container::before, .container::after {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

.container {
  width: 200px;
  height: 200px;
  margin: auto;
  box-shadow: inset 0 0 0 1px rgba(105, 202, 98, 0.5);
}

.container::before, .container::after {
  content: '';
  z-index: -1;
  margin: -5%;
  box-shadow: inset 0 0 0 2px;
  animation: clipMe 8s linear infinite;
}

.container::before {
  animation-delay: -4s;
}

@keyframes clipMe {
  0%, 100% {
    clip: rect(0px, 220px, 2px, 0px);
  }
  25% {
    clip: rect(0px, 2px, 220px, 0px);
  }
  50% {
    clip: rect(218px, 220px, 220px, 0px);
  }
  75% {
    clip: rect(0px, 220px, 220px, 218px);
  }
}