<div class="middle">
<ul class="menu">
<li class="item" id="profile">
<a href="#profile" class="button"><i class="far fa-user"></i>Profile</a>
<div class="smenu">
<a href="#">Posts</a>
<a href="#">Picture</a>
</div>
</li>
<li class="item" id="messages">
<a href="#messages" class="button"><i class="far fa-envelope"></i>Messages</a>
<div class="smenu">
<a href="#">New</a>
<a href="#">Sent</a>
<a href="#">Spam</a>
</div>
</li>
<li class="item" id="settings">
<a href="#settings" class="button"><i class="fas fa-cog"></i>Settings</a>
<div class="smenu">
<a href="#">Password</a>
<a href="#">Language</a>
</div>
</li>
<li class="item">
<a href="#" class="button"><i class="fas fa-sign-out-alt"></i>Logout</a>
</li>
</ul>
</div>
* {
margin: 0;
padding: 0;
font-family: sans-serif;
list-style: none;
text-decoration: none;
}
.middle {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.menu {
width: 300px;
border-radius: 8px;
overflow: hidden;
}
.item {
border-top: 1px solid #2980b9;
overflow: hidden;
}
.button {
display: block;
padding: 16px 20px;
background: #3498db;
color: white;
position: relative;
}
.button::before {
content: '';
position: absolute;
width: 14px;
height: 14px;
background: #3498db;
left: 20px;
bottom: -7px;
transform: rotate(45deg);
}
.button i {
margin-right: 10px;
}
.smenu {
background: #333;
overflow: hidden;
max-height: 0;
transition: max-height 0.3s;
}
.smenu a {
display: block;
padding: 16px 26px;
color: white;
font-size: 14px;
margin: 4px 0;
position: relative;
}
.smenu a::before {
content: '';
position: absolute;
width: 6px;
height: 100%;
background: #3498db;
left: 0;
top: 0;
transition: 0.3s;
opacity: 0;
}
.smenu a:hover::before{
opacity: 1;
}
.item:target .smenu{
max-height: 10em;
}
This Pen doesn't use any external CSS resources.