<nav class="navbar">
  <a href="#" class="navbar__link">
    <span class="navbar__icon">
      <span data-feather="home"></span>
    </span>
    <span class="navbar__label">Home</span>
  </a>

  <a href="#" class="navbar__link">
    <span class="navbar__icon">
      <span data-feather="clipboard"></span>
    </span>
    <span class="navbar__label">Work</span>
  </a>

  <a href="#" class="navbar__link">
    <span class="navbar__icon">
      <span data-feather="users"></span>
    </span>
    <span class="navbar__label">User</span>
  </a>

  <a href="#" class="navbar__link">
    <span class="navbar__icon">
      <span data-feather="settings"></span>
    </span>
    <span class="navbar__label">Settings</span>
  </a>
</nav>
@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500&display=swap");

$ff: "Roboto Mono", sans-serif;
$hover_color: #e022bb;

body {
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #a770ef;
  background: linear-gradient(to right, #fdb99b, #cf8bf3, #a770ef);
}

.navbar {
  $bem-block: &;

  background: #fff;
  padding: 10px 30px;
  border-radius: 50px;
  transition: 0.3s;

  &:hover {
    box-shadow: 0 0 40px rgba(0, 0, 0, 0.2);
  }

  &__link {
    display: inline-flex;
    align-items: center;
    flex-direction: column;
    text-align: center;
    text-decoration: none;
    padding: 10px 30px;
    overflow: hidden;
    position: relative;
    transition: 0.2s ease-in-out;

    &:hover #{$bem-block}__icon {
      color: $hover_color;
      transform: translateY(0) scale(0.9);

      &::before {
        transform: translate(-50%, -50%);
        opacity: 1;
      }
    }

    &:hover #{$bem-block}__label {
      transform: translateY(0);
    }
  }

  &__icon {
    color: #333;
    transform: translateY(15px);
    transition: 0.3s cubic-bezier(0.09, 0.79, 0.57, 0.89);
    position: relative;

    &::before {
      content: "";
      width: 45px;
      height: 45px;
      background: rgba($hover_color, 0.15);
      position: absolute;
      left: 50%;
      top: 50%;
      z-index: -1;
      border-radius: 50%;
      transform: translate(-50%, 50%);
      opacity: 0;
      transition: 0.3s;
    }
  }

  &__label {
    display: block;
    margin-top: 10px;
    font-family: $ff;
    color: #e022bb;
    position: relative;
    bottom: 0;
    font-size: 0.9375rem;
    transform: translateY(200%);
    transition: 0.3s cubic-bezier(0.09, 0.79, 0.57, 0.89);
    transition-delay: 0.2s;
  }
}
View Compiled
feather.replace();

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/feather-icons/4.29.0/feather.min.js