JSFiddle - React, Tailwind, and code Playground
HTML
<div class="dropdown">
<ul>
<li>
<a href="#">level1-link1</a>
</li>
<li>
<a href="#">level1-link2</a>
<ul>
<li>
<a href="#">level2-link1</a>
</li>
<li>
<a href="#">level2-link2</a>
<ul>
<li>
<a href="#">level3-link1</a>
</li>
<li>
<a href="#">level3-link2</a>
<ul>
<li>
<a href="#">level4-link1</a>
</li>
<li>
<a href="#">level4-link2</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#">level1-link3</a>
</li>
<li>
<a href="#">level1-link4</a>
</li>
<div class="clear"></div>
</ul>
<div class="white_layer"></div>
</div>
<img src="http://dev.icsandbox.com/wp-content/uploads/2015/01/Home_CloselyHeld-opt.jpg" />
CSS
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video
{
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
*
{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
body
{
font: 18px arial, sans-serif;
}
ol, ul
{
list-style: none;
}
a
{
text-decoration: none;
color: #333;
}
a:hover
{
color: #0066a4;
}
img
{
max-width: 100%;
}
.clear
{
clear: both;
}
.dropdown, .dropdown > ul > li
{
position: relative;
}
.white_layer
{
width: 100%;
height: 200px;
position: absolute;
top: 100%;
left: 0;
background: rgba(255, 255, 255, 0.76);
display: none;
}
.show .white_layer
{
display: block;
}
.dropdown > ul
{
padding: 0 20px;
}
.dropdown > ul > li
{
float: left;
margin-left: 20px;
text-transform: uppercase;
}
.dropdown > ul > li li
{
text-transform: lowercase;
}
.dropdown > ul > li:first-child
{
margin-left: 0px;
}
.dropdown li:hover > ul
{
display: block;
}
.dropdown > ul > li > ul ul
{
border-left: 1px solid #888;
}
.dropdown > ul > li > a
{
display: block;
padding: 20px 10px;
}
.dropdown > ul > li a
{
display: inline-block;
padding: 10px 0;
}
.dropdown > ul ul
{
width: 100%;
position: absolute;
top: 0;
left: 100%;
z-index: 1;
display: none;
}
.dropdown > ul > li > ul
{
width: 200px;
...
JavaScript
$(document).ready(function(){
$('.dropdown li').hover(function(){
if ($(this).children('ul').length > 0){
$('.dropdown').addClass('show');
}
}, function(){
if ($('.dropdown > ul > li ul').css('display') != 'block'){
$('.dropdown').removeClass('show');
}
});
});