<div class="button">
  <a href="#">
    Often Unseen 
    <span class="shift"></span>
  </a>
  <div class="mask"></div>
</div>
:root {
  --bg-body: rgba(25, 25, 25, 1);
  --bg-body-gradient: radial-gradient(30% 90% ellipse at bottom center, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 100%);
  --bg-body-hover: rgba(33, 33, 33, 1);
  --bg-button: rgba(255, 255, 255, 0);
  --bg-button-hover: rgba(255, 255, 255, 0.05);
  --bg-button-active: rgba(255, 255, 255, 1.0);
  --bg-mask: rgba(255, 255, 255, 0.5);
  --bg-mask-hover: rgba(255, 255, 255, 1.0);
  --border-button: rgba(255, 255, 255, 0.2);
  --border-button-hover: rgba(255, 255, 255, 1.0);
  --color-button: rgba(255, 255, 255, 0.6);
  --color-button-hover: rgba(255, 255, 255, 1.0);
  --color-button-active: var(--body-bg);
  --font-button: "Varela Round", sans-serif;
  --shadow-button-hover: 0 0 0.3125rem rgba(255, 255, 255, 0.8);
  --transition-easing: cubic-bezier(0.19, 1, 0.22, 1);
}

body {
  align-items: center;
  background-color: var(--bg-body);
  background-image: var(--bg-body-gradient);
  display: flex;
  height: 100vh;
  justify-content: center;
  margin: 0;
  padding: 0;
  transition: background-color 2s var(--transition-easing);
}

body.hover {
  background-color: var(--bg-body-hover);
}

.button {
  background-color: var(--bg-button);
  border: 0.125rem solid var(--border-button);
  cursor: pointer;
  letter-spacing: 0.2125rem;
  line-height: 1;
  overflow: hidden;
  padding: 1.25rem 1.875rem;
  position: relative;
  text-align: center;
  text-transform: uppercase;
  transition: 
    background-color 0.3s var(--transition-easing),
    border 1s var(--transition-easing),
    color 0.6s var(--transition-easing);
  user-select: none;
}

.button a {
  color: var(--color-button);
  font-family: var(--font-button);
  position: relative;
  text-decoration: none;
  white-space: nowrap;
  z-index: 2;
}

.button .mask {
  background-color: var(--bg-mask);
  height: 6.25rem;
  position: absolute;
  transform: translate3d(-120%, -3.125rem, 0) rotate3d(0, 0, 1, 45deg);
  transition: all 1.1s var(--transition-easing);
  width: 12.5rem;
  z-index: 1;
}

.button .shift {
  display: inline-block;
  transition: all 1.1s var(--transition-easing);
  vertical-align: text-top;
}

.button:hover {
  background-color: var(--bg-button-hover);
  border-color: var(--border-button-hover);
  box-shadow: var(--shadow-button-hover);
}

.button:hover a {
  color: var(--color-button-hover);
}

.button:hover .mask {
  background-color: var(--bg-mask-hover);
  transform: translate3d(120%, -6.25rem, 0) rotate3d(0, 0, 1, 90deg);
}

.button:hover .shift {
  transform: translateX(0.3125rem);
}

.button:active {
  background-color: var(--bg-button-active);
}

.button:active a {
  color: var(--color-button-active);
}

/*
.button:hover {
  background-image: url('http://.com/img/codepen/savvy.jpg');
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
}
*/
const body = document.body;
const btn = document.querySelectorAll('.button')[0];

btn.addEventListener('mouseenter', () => {
  body.classList.add('hover');
});

btn.addEventListener('mouseleave', () => {
  body.classList.remove('hover');
});

External CSS

  1. https://fonts.googleapis.com/css2?family=Varela+Round&amp;display=swap

External JavaScript

This Pen doesn't use any external JavaScript resources.