JSFiddle - React, Tailwind, and code Playground
HTML
<div class="click-nav">
<ul class="no-js">
<li> <a href="#" class="clicker"><img src="img/i-1.png" alt="Icon">Profile</a>
<ul>
<li><a href="#"><img src="img/i-2.png" alt="Icon">Dashboard</a>
</li>
<li><a href="#"><img src="img/i-3.png" alt="Icon">Settings</a>
</li>
<li><a href="#"><img src="img/i-4.png" alt="Icon">Privacy</a>
</li>
<li><a href="#"><img src="img/i-5.png" alt="Icon">Help</a>
</li>
<li><a href="#"><img src="img/i-6.png" alt="Icon">Sign out</a>
</li>
</ul>
</li>
</ul>
</div>
CSS
body {
background-color:#334873
}
.click-nav {
margin:100px auto;
width:200px;
}
.click-nav ul {
position:relative;
font-weight:900;
}
.click-nav ul li {
position:relative;
list-style:none;
cursor:pointer;
}
.click-nav ul li ul {
position:absolute;
left:0;
right:0;
}
.click-nav ul .clicker {
position:relative;
background:#2284B5;
color:#FFF;
}
.click-nav ul .clicker:hover, .click-nav ul .active {
background:#196F9A;
}
.click-nav img {
position:absolute;
top:9px;
left:12px;
}
.click-nav ul li a {
transition:background-color 0.2s ease-in-out;
-webkit-transition:background-color 0.2s ease-in-out;
-moz-transition:background-color 0.2s ease-in-out;
display:block;
padding:8px 10px 8px 40px;
background:#FFF;
color:#333;
text-decoration:none;
}
.click-nav ul li a:hover {
background:#F2F2F2;
}
/* Fallbacks */
.click-nav .no-js ul {
display:none;
}
.click-nav .no-js:hover ul {
display:block;
}
.overlay {
position:absolute;
/* color with alpha transparency */
background-color: rgba(0, 0, 0, 0.3);
/* stretch to screen edges */
top: 0;
left: 0;
bottom: 0;
right: 0;
}
JavaScript
$(function () {
$('.click-nav > ul').toggleClass('no-js js');
$('.click-nav .js ul').hide();
$('.click-nav .js').click(function (e) {
$('.click-nav .js ul').slideToggle(200);
$('.clicker').toggleClass('active');
e.stopPropagation();
});
$(document).click(function () {
if ($('.click-nav .js ul').is(':visible')) {
$('.click-nav .js ul', this).slideUp();
$('.clicker').removeClass('active');
}
});
$('.clicker').click(function () {
$('body').toggleClass('overlay');
});
});