I am creating an on click multi level dropdown menu with pure CSS. I found a smart solution from here and it's work like a charm.
<nav>
<ul>
<li>
<a href="#">
<span class="navtitle">Home</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<span class="navtitle">More +</span>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">
<span class="navtitle">Sub 1</span>
</a>
</li>
<li>
<a href="#">
<span class="navtitle">Sub 2</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">
<span class="navtitle">Sub More +</span>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">
<span class="navtitle">Sub 2 1</span>
</a>
</li>
<li>
<a href="#">
<span class="navtitle">Sub 2 2</span>
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
And my CSS lines are look like this:
*, html {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul {
padding: 0;
margin: 0;
}
li {
list-style: none;
position: relative;
}
a {
text-decoration: none;
}
nav {
display: flex;
}
nav a {
display: block;
padding: 8px 10px;
}
nav > li {
margin: 0 6px
}
.dropdown {
position: relative;
}
.dropdown-menu {
display: none;
background-color: #ddd;
position: absolute;
top: 100%;
min-width: 130px;
left: 0;
z-index: 100;
}
.dropdown-menu .dropdown-menu {
left: 100%;
top: 0;
}
.dropdown .dropdown-toggle:focus + .dropdown-menu,
.dropdown-menu:hover {
display: block;
}
The problem is I want to keep the second level of submenu (i.e. Sub More +) and soon still opened even though I hover outside submenu area. I know it comes from this css, but how is the trick?
.dropdown-menu:hover { display: block; }
See my jsfiddle. Hope it makes sense.