Следующий код будет описывать эту ситуацию:
ul {
margin: 0 0 1% 5%;
font-size: 18px;
}
ul li {
display: inline;
padding: 10px;
}
.drop-down {
position: absolute;
background: dodgerblue;
}
.drop-down .level {
left: 114px;
top: 10px;
position: absolute;
background: red;
display: block;
width: 100%;
}
.drop-down li {
display: block;
}
ul {
margin: 0;
padding: 0;
}
.drop-down .level.grey {
background: grey;
}
<body>
<nav>
<ul>
<li class="drop">list item 1</li>
<div class="drop-down">
<ul>
<li>list item sub 2</li>
<div class="drop-down level">
<ul>
<li>list item sub-sub 3</li>
<li>list item sub-sub 3</li>
<li>list item sub-sub 3</li>
</ul>
</div>
<li>list item sub 3</li>
<div class="drop-down level grey">
<ul>
<li>list item sub-sub 3</li>
<li>list item sub-sub 3</li>
<li>list item sub-sub 3</li>
</ul>
</div>
<li>list item sub 4</li>
</ul>
</div>
<li class="drop">list item 2</li>
<li class="drop">list item 3</li>
<li class="drop">list item 4</li>
<li class="drop">list item 5</li>
<li class="drop">list item 6</li>
<li class="drop">list item 7</li>
<li class="drop">list item 8</li>
</ul>
</nav>
</body>
Я строю трехуровневое меню, которое, когда вы наводите курсор на каждый элемент на каждом уровне, открывает следующий уровень, соответствующий элементу, который выhover.
Вот чего я хотел бы достичь более или менее:
![enter image description here](https://i.stack.imgur.com/E2Anu.png)
Я еще не достиг точкигде я добавляю свойство при наведении, потому что имею дело с проблемой позиционирования.Элементы (li
) на первом уровне имеют встроенное расположение, элементы второго уровня (li
) вместо этого являются блокированными элементами, сложенными друг на друга, и то же самое происходит на третьем уровне.
Теперь третий уровень находится справа от второго уровня, поэтому, если я использую свойство position:absolute
, а затем, например, top:0
, каждый под-третий уровень (предположим, что у нас более одного пункта меню третьего уровня) будет скрывать следующий подуровень-3, как это происходит на этой картинке:
![enter image description here](https://i.stack.imgur.com/uHn6U.png)
По сути, я бы хотел избежать этой проблемы, поэтому, если вы наведите курсор мыши на list-item-sub-2
Я хотел бы открыть только div с классом drop-down.level
, и когда я наведу курсор на следующий список элементов list-item-sub-3
, я хочу открыть div с классом drop-down.level.grey
в другой позиции, которая соответствует list-item-sub-3
(немного ниже к предыдущему списку).
Я хотел бы использовать только css, но, как я уже сказал, если я использую свойство position:absolute
для каждого элемента со значением, таким как top:10px
или top:2%
каждый элемент поместитдруг на друга, если я вместо этого использую position:relative
, каждый элемент будет вложен в своего отца верхнего уровня.
Любое предложение?