user14095754
user14095754

Reputation:

Dropdown multi-level menu in parallel

I'm trying to create a dropdown multilevel menu with the sublist in parallel, as the image:

1

The sublist must be parallel and not diagonal, as is common in multilevel menus:

2.

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

Answers (1)

s.kuznetsov
s.kuznetsov

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

Related Questions