<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" integrity="sha384-gfdkjb5BdAXd+lj+gudLWI+BXq4IuLW5IT+brZEZsLFm++aCMlF1V92rMkPaX4PP" crossorigin="anonymous">

<div class="frame">
  <div class="boxes">
		<div class="box one">
			<span class="text">Contact</span>
			<span class="icon"><i class="fas fa-envelope"></i></span>
		</div>
		<div class="box two">
			<span class="text">Portfolio</span>
			<span class="icon"><i class="fas fa-star"></i></span>
		</div>
		<div class="box three">
			<span class="text">About</span>
			<span class="icon"><i class="fas fa-info-circle"></i></span>
		</div>
		<div class="box four">
			<span class="text">Home</span>
			<span class="icon"><i class="fas fa-home"></i></span>
		</div>
	</div>
</div>
// delete the following line if no text is used
// edit the line if you wanna use other fonts
@import url('https://fonts.googleapis.com/css?family=Fira+Sans:300i');
body {
	background: #201c29;
}
// use only the available space inside the 400x400 frame
.frame {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 400px;
  height: 400px;
  margin-top: -200px;
  margin-left: -200px;
  border-radius: 2px;
	box-shadow: .5rem 1rem 1rem rgba(0,0,0,0.6);
	overflow: hidden;
  background: #fff;
  color: #333;
	font-family: 'Fira Sans', Helvetica, sans-serif;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}
.boxes {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  width: 100%;
  height: 100%;
}
.boxes .box {
  position: relative;
  flex: 1 1 auto;
  width: 20%;
  transition: all .5s ease-in-out;
  cursor: pointer;
  overflow: hidden;
	display: flex;
	box-shadow: .2rem 0 .2rem rgba(0, 0, 0, .6);
}
.boxes .box .text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.5);
  font-size: 2rem;
  color: transparent;
  transition: all .5s ease-in-out;
}
.boxes .box.one {
  background: rgb(39%, 23%, 38%);
	.text {
		margin-left: 1rem;
	}
}
.full {
	width: 400px;
}
.hide {
	width: 0;
}
.boxes .box.two {
  background: rgb(39%, 23%, 48%);
	.text {
		margin-left: 1rem;
	}
}
.boxes .box.three {
  background: rgb(39%, 23%, 58%);
}
.boxes .box.four {
  background: rgb(39%, 23%, 68%);
	width: 80%;
	.text {
		transform: translate(-50%, -50%) scale(1);
		color: white;
		margin-left: 1rem;
	}
}
.boxes .box:hover {
  width: 100%;
	.text {
		color: #fff;
		transform: translate(-50%, -50%) scale(1);
	}
	.four {
		opacity: 0;
		color: transparent;
		transform: translate(-50%, -50%) scale(0);
	}
}
.box .icon {
	color: white;
	align-self: center;
	font-size: 2rem;
	padding-left: 1.3rem;
}
View Compiled
// jQuery v3.3.1 is supported
$('.box .one').click(function() {
	$(this).toggleClass('full');
	$('.two').toggleClass('hide');
	$('.three').toggleClass('hide');
	$('.four').toggleClass('hide');
})

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://100dayscss.com/codepen/js/jquery.min.js