Reputation:
I'm trying to create a dropdown multilevel menu with the sublist in parallel, as the image:
The sublist must be parallel and not diagonal, as is common in multilevel menus:
.
If I use independent divs instead of sublist, I don't see how to tell to the subcategory div which parent category element is selected.
My try: https://codepen.io/Agrimensor/pen/vYgGJwr
*,
*::before,
*::after {
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body {
font-family: sans-serif;
margin: 0;
padding: 10px;
}
.dropdown {
margin: 0;
padding: 0;
list-style: none;
width: 100px;
background-color: #0abf53;
}
.dropdown li {
position: relative;
}
.dropdown li a {
color: #ffffff;
text-align: center;
text-decoration: none;
display: block;
padding: 10px;
}
.dropdown li ul {
position: absolute;
top: 0;
left: 100%;
margin: 0;
padding: 0;
list-style: none;
display: none;
line-height: normal;
background-color: #333;
}
.dropdown li ul li a {
text-align: left;
color: #cccccc;
font-size: 14px;
padding: 10px;
display: block;
white-space: nowrap;
}
.dropdown li ul li a:hover {
background-color: #0abf53;
color: #ffffff;
}
.dropdown li ul li ul {
left: 100%;
top: 0;
}
ul li:hover > a {
background-color: #0abf53;
color: #ffffff !important;
}
ul li:hover > ul {
display: block;
}
<ul class="dropdown">
<li><a href="#">Menu</a>
<ul>
<li><a href="">Nice Dropdown Menu</a></li>
<li><a href="">Submenu - 1</a></li>
<li><a href="#">Dropdown</a>
<ul>
<li><a href="">Submenu - 1</a></li>
<li><a href="">Submenu - 2</a></li>
<li><a href="#">Dropdown</a>
<ul>
<li><a href="">Submenu - 1</a></li>
<li><a href="">Submenu - 2</a></li>
<li><a href="">Submenu - 3</a></li>
</ul>
</li>
<li><a href="">Submenu - 3</a></li>
</ul>
</li>
<li><a href="">Submenu - 2</a></li>
</ul>
</li>
</ul>
Upvotes: 2
Views: 613
Reputation: 15223
Remove rules top: 0
and left: 100%
in .dropdown li ul
, and also remove position: relative
from .dropdown li
.
*,
*::before,
*::after {
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body {
font-family: sans-serif;
margin: 0;
padding: 10px;
}
.dropdown {
margin: 0;
padding: 0;
list-style: none;
width: 100px;
background-color: #0abf53;
}
.dropdown li {
/* position: relative;*/
}
.dropdown li a {
color: #ffffff;
text-align: center;
text-decoration: none;
display: block;
padding: 10px;
}
.dropdown li ul {
position: absolute;
/*top: 0;
left: 100%;*/
margin: 0;
padding: 0;
list-style: none;
display: none;
line-height: normal;
background-color: #333;
}
.dropdown li ul li a {
text-align: left;
color: #cccccc;
font-size: 14px;
padding: 10px;
display: block;
white-space: nowrap;
}
.dropdown li ul li a:hover {
background-color: #0abf53;
color: #ffffff;
}
.dropdown li ul li ul {
left: 100%;
top: 0;
}
ul li:hover > a {
background-color: #0abf53;
color: #ffffff !important;
}
.dropdown:hover * {
display: block;
}
.dropdown > li > ul:hover ul {
display: none;
}
li:hover > a.drop + ul {
display: block!important;
}
<ul class="dropdown">
<li>
<a href="#">Menu</a>
<ul>
<li><a href="">Nice Dropdown Menu</a></li>
<li><a href="">Submenu - 1</a></li>
<li>
<a class="drop" href="#">Dropdown</a>
<ul>
<li><a href="">Submenu - 1</a></li>
<li><a href="">Submenu - 2</a></li>
<li>
<a class="drop" href="#">Dropdown</a>
<ul>
<li><a href="">Submenu - 1</a></li>
<li><a href="">Submenu - 2</a></li>
<li><a href="">Submenu - 3</a></li>
</ul>
</li>
<li><a href="">Submenu - 3</a></li>
</ul>
</li>
<li><a href="">Submenu - 2</a></li>
</ul>
</li>
</ul>
Upvotes: 1