SnezhanaLast, ну элементам <ul>, которые под-меню, надо добавить данные классы!
|
Decode,
Добавила вручную в HTML, сабменю все равно видно, а стоит убрать мешающий класс display: inline-block, так оно попросту не открывается. |
SnezhanaLast, уберите из CSS:
.page-sidebar-menu.page-sidebar-menu-active-submenu li > .sub-menu {
display: inline-block !important;
}
Вот так должно работать:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
<style>
.submenu-hide {
display: none;
}
</style>
</head>
<body>
<ul class="page-sidebar-menu">
<li class="sidebar-menu-item">
<a href="#">One</a>
<ul class="sub-menu submenu-hide">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</li>
<li class="sidebar-menu-item">
<a href="#">Two</a>
<ul class="sub-menu submenu-hide">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</li>
<li class="sidebar-menu-item">
<a href="#">Three</a>
<ul class="sub-menu submenu-hide">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</li>
</ul>
<script>
var menu = document.querySelector('.page-sidebar-menu'),
subMenu = document.querySelectorAll('.sub-menu'), current;
menu.onclick = function(e) {
var target = e.target;
while(target != this) {
if ( target.classList.contains('sub-menu') ) break;
if ( target.classList.contains('sidebar-menu-item') ) {
current = target.querySelector('.sub-menu');
[].forEach.call(subMenu, function(item) {
if (item == current) return;
item.classList.add('submenu-hide');
});
current.classList.toggle('submenu-hide');
break;
}
target = target.parentNode;
}
return false;
};
menu.onmousedown = menu.onselectstart = function() {
return false;
};
</script>
</body>
</html>
И да, добавьте еще класс элементам sidebar-menu-item <li>, которые являются основными пунктами меню. |
Decode,
Удалила, изменила, класс добавила, толку ноль. Скрипт не работает, может конфликтует? Вижу, что по идее работает. Стрелки еще неверно отображаются. Не судьба мне видимо верстку на логику натянуть... |
SnezhanaLast, я сразу не посмотрел, оказывается у вас там 2 элемента с классом page-sidebar-menu.
В скрипте измените первую строку на:
var menu = document.querySelectorAll('.page-sidebar-menu')[1]
|
Decode,
С наступившим новым годом Вас! Изменила, все осталось по прежнему. :( |
SnezhanaLast, спасибо, Вас тоже с Новым годом!
В консоли ошибка, надо запятую поставить после этой строки:
var menu = document.querySelectorAll('.page-sidebar-menu')[1]
|
Decode,
Поставила, все так же.( |
SnezhanaLast, вам надо со стилями разобраться. Если убрать эти два селектора, то работает.
.page-sidebar-menu.page-sidebar-menu-active-submenu li .sub-menu {
display: none;
width: 194px;
z-index: 2000;
position: absolute;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
-ms-border-radius: 4px;
-o-border-radius: 4px;
border-radius: 4px;
}
.page-sidebar .page-sidebar-menu .sub-menu,
.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu .sub-menu {
list-style: none;
display: none;
padding: 0;
margin: 8px 0 8px 0;
}
|
| Часовой пояс GMT +3, время: 00:46. |