Выпадающий список в меню с возможностью скролла

В примере ниже возникла проблема с появлением подменю. Проблема заключается в том, что мне нужно, чтобы в блоке меню можно было бы скролить по координате x, для этого я прописываю overflow-x: scroll; Из-за чего часть меню, которая не влезла в 200px, а по y вся, скрывается. Пытался присвоить разные значения overflow-y, но подменю не появлялось как нужно, оно лишь появлялось в скрытой части и при включенном скролле по y, можно спустившись вниз увидеть подменю.

body {
  padding: 10px !important;
  font: 300 16px tahoma;
}

.nav {
  list-style: none;
  display: flex;
  width: 200px;
  overflow-x: scroll;
  scrollbar-width: none;
}

.nav::-webkit-scrollbar {
  display: none;
}

.nav li {
  position: relative;
  background: #34495e;
  transition: background 0.3s ease;
}

.nav>li:first-of-type {
  border-radius: 5px 0 0 5px;
}
.nav>li:last-of-type {
  border-radius: 0 5px 5px 0;
}

.nav li a {
  display: block;
  text-decoration: none;
  color: #fff;
  padding: 13px;
  border-radius: 5px;
}

.nav li:hover {
  background-color: #2C3E50;
}

.sub-nav {
  position: absolute;
  border-top: 15px solid transparent;
  list-style: none;
  padding: 0;
}

.triangle {
  width: 0;
  height: 0;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid #34495e;
  position: absolute;
  margin-top: 5px;
  margin-left: 5px;
}

.triangle, .sub-nav {
  visibility: hidden;
  opacity: 0;
  transition: all 0.3s ease;
}

.nav li:hover .triangle,
.nav li:hover .sub-nav {
  visibility: visible;
  opacity: 1;
}

.sub-nav li {
  white-space: nowrap;
}

.sub-nav>li:first-of-type {
  border-radius: 5px 5px 0 0;
}
.sub-nav>li:last-of-type {
  border-radius: 0 0 5px 5px;
}

.sub-nav a {
  font-size: 90%;
  margin: 3px;
  transition: background ease .3s;
}

.sub-nav>li:hover {
  background: #E74C3C;
}
<nav>
  <ul class="nav">
    <li><a href="">Главная</a></li>
    <li>
      <a href="">Подменю</a>
      <i class="triangle"></i>
      <ul class="sub-nav">
        <li><a href="">Подпункт 1</a></li>
        <li><a href="">Подпункт 2</a></li>
        <li><a href="">Подпункт 3</a></li>
        <li><a href="">Подпункт 4</a></li>
      </ul>
    </li>
    <li><a href="">Контакты</a></li>
  </ul>
</nav>

То есть, как я понимаю, мне нужно сделать так, чтобы подменю не было дочерним элементом меню, чтобы оно не обрезалось. Но тогда оно не будет привязано к пункту меню. Все что пришло в голову, это JS.

Можно ли как-то исправить проблему не используя JS?


Ответы (0 шт):