<link href="https://fonts.googleapis.com/css?family=Oswald:700" rel="stylesheet">
<div class="main__menu">
  <div class="container">
    <nav>
      <ul>
        <li><a href="#"><span data-text="HTML/CSS"></span>HTML</a></li>
        <li><a href="#"><span data-text="JavaScript"></span>JavaScript</a></li>
        <li><a href="#"><span data-text="CSS"></span>CSS</a></li>
        <li><a href="#"><span data-text="React"></span>React</a></li>
        <li><a href="#"><span data-text="Angular"></span>Angular</a></li>
      </ul>
    </nav>
  </div>
</div>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  text-decoration: none;
  font-family: 'Oswald', sans-serif;
}

// COLORS

$color-black: #000;
$color-white: #fff;
$color-dark: #262626;
$color-lightest: #333;
$color-red: #ef0d33;
$color-grey: #bfbfbf;

@mixin desktop {
  @media (min-width: (1025px)) {
    @content;
  }
}

@mixin mobile {
  @media (max-width: (1024px)) {
    @content;
  }
}

@function vw($value, $base: 1920) {
  @return $value / $base * 100vw;
}

@function vmin($value, $base: 320) {
  @return $value / $base * 100vmin;
}

@function vh($value, $base: 937) {
  @return $value / $base * 100vh;
}


.main__menu {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 300;
  padding: vh(90) vh(200);
  padding-bottom: 0;
  width: 100%;
  height: 100vh;
  background-color: #111517;
  transition: all 0.8s ease-in-out;

  .container {
    align-items: center;
    justify-content: flex-end;
    width: vh(1300);
    height: 100%;

    @include mobile {
      justify-content: center;
    }
  }

  nav {
    ul {
      list-style-type: none;

      li {
        a {
          position: relative;
          display: inline-block;
          overflow: hidden;
          font-size: vh(80);
          color: $color-white;
          opacity: 0;
          transform: translateY(-10px);
          transition: all 0.6s;

          span {
            position: absolute;
            left: 0;
            display: block;
            overflow: hidden;
            width: 0;
            height: 100%;
            font-size: vh(80);
            background-color: #111517;
            backface-visibility: hidden;
            transition: width .3s;

            &::before {
              content: attr(data-text);
              position: absolute;
              right: 0;
              display: block;
              width: 100%;
              color: $color-red;
              backface-visibility: hidden;
            }
          }

          &:hover {
            span {
              width: 100%;
              transition: width 0.3s;
            }
          }
        }

        .opens {
          opacity: 1;
          transform: translateY(0);
          transition: all 0.6s;
        }
      }

      @include mobile {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
      }
    }
  }

  @include mobile {
    padding-top: vmin(50);
  }
}
View Compiled
$('.main__menu nav ul li a').addClass('opens');

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js