<nav>
  <a href="#" class="nav__link">
    <span class="nav__link--text" data-splitting>Home</span>
    <span class="nav__link--text" data-splitting>Home</span>
  </a>
  <a href="#" class="nav__link">
    <span class="nav__link--text" data-splitting>About</span>
    <span class="nav__link--text" data-splitting>About</span>
  </a>
  <a href="#" class="nav__link">
    <span class="nav__link--text" data-splitting>Contact</span>
    <span class="nav__link--text" data-splitting>Contact</span>
  </a>
</nav>

<div class="support">
  <a href="https://twitter.com/DevLoop01" target="_blank"><i class="fab fa-twitter-square"></i></a>
  <a href="https://dribbble.com/devloop01" target="_blank"><i class="fab fa-dribbble"></i></a>
</div>
@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@1,400&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@1,500&display=swap");
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

:root {
  font-size: 16px;

  --link-translate-x: 3rem;
}

body {
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #000;
  overflow: hidden;
}

a {
  text-decoration: none;
  &:focus {
    outline: none;
    border: none;
  }
}

.nav {
  &__link {
    font-size: 5rem;
    color: #fff;
    display: grid;
    font-style: italic;

    &--text {
      grid-area: 1/1;
      transition: opacity 0.4s cubic-bezier(0.445, 0.05, 0.55, 0.95),
        transform 0.4s cubic-bezier(0.445, 0.05, 0.55, 0.95);
      .word {
        white-space: nowrap;
      }
      .char {
        display: inline-block;
        transform-origin: 50% 50% 0.4em;
        transition: transform 0.5s cubic-bezier(0.5, 0, 0, 1);
        transition-delay: calc(0ms + var(--char-index) * 25ms);
        backface-visibility: hidden;
        margin: 0 -0.02em;
      }
    }

    &--text:nth-child(1) {
      font-family: "Playfair Display";
      font-weight: 500;
    }
    &--text:nth-child(2) {
      font-family: "Roboto";
      font-weight: 500;
      opacity: 0;
      .char {
        transform: rotate3d(1, -0.5, 0, 90deg);
        // OR
        // transform: rotateX(90deg) rotateY(-45deg);
      }
    }

    &:hover {
      .nav__link--text {
        transform: translateX(var(--link-translate-x));
        &:nth-child(1) {
          opacity: 0;
          .char {
            transform: rotate3d(1, 0.3, 0, -90deg);
            // OR
            // transform: rotateX(-90deg) rotateY(-27deg);
          }
        }
        &:nth-child(2) {
          opacity: 1;
          .char {
            transform: rotate3d(0, 0, 0, 90deg);
            // OR
            // transform: rotate(0);
          }
        }
      }
    }
  }
}

@media only screen and (max-width: 20rem) {
  :root {
    font-size: 10px;
    --link-translate-x: 2rem;
  }
}

.support {
  position: absolute;
  right: 10px;
  bottom: 10px;
  padding: 10px;
  display: flex;
  a {
    margin: 0 10px;
    color: #fff;
    font-size: 1.8rem;
    backface-visibility: hidden;
    transition: all 150ms ease;
    &:hover {
      transform: scale(1.1);
    }
  }
}
View Compiled
console.clear();

Splitting();

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.1/css/all.min.css
  2. https://fonts.googleapis.com/css?family=Montserrat&amp;display=swap"rel="stylesheet

External JavaScript

  1. https://unpkg.com/splitting/dist/splitting.min.js