Вложенный элемент li перекрывает родительский элемент li

У меня есть вложенный элемент списка в качестве меню. Когда я нажимаю на элемент, я хочу, чтобы список расширился и появился внутренний список. Но внутренний элемент li (пункт 1 подменю) перекрывает родительский элемент li (пункт 2 меню).

<div class="menu">
    <ul class="no-list-style">
        <li class="menu-item" ng-click="selectedAction = 1">Menu Item 1
            <ul class="no-list-style" ng-if="selectedAction == 1">
                <li class="sub-menu-item">Sub-menu item 1</li>
            </ul>
        </li>
        <li class="menu-item">Menu item 2</li>
        <li class="menu-item">Menu item 3</li>
    </ul>
</div>

Мой CSS выглядит так:

.no-list-style {
    padding: 0;
}
.menu-item {
    height: 30px;
    padding-left: 20px;
    margin: 0;
}
.sub-menu-item {
    height: 30px;
    display: inline-block;
    width: 100%;
    position: absolute;
}

Если я не использую абсолютную позицию для пункта подменю класса css, оба текста в пункте 1 подменю и пункте 2 меню перекрываются.

Я хочу, чтобы элемент подменю был вставлен в вертикальное меню, перемещая пункт меню 2 вниз.

Заранее спасибо!

1 ответ

function submenuappear() {
  document.getElementById("sub-menu-item").style.marginLeft =  "0";
  document.getElementById("menu-item2").style.marginTop =  "0";
  }

function submenudisappear() {
  document.getElementById("sub-menu-item").style.marginLeft =  "-300px";
  document.getElementById("menu-item2").style.marginTop =  "-20px";
  }

function submenudisappear() {
  document.getElementById("sub-menu-item").style.marginLeft =  "-300px";
  document.getElementById("menu-item2").style.marginTop =  "-20px";
  }
#sub-menu-item {
    margin-left: -300px;
}

#menu-item2 {
  margin-top: -20px;
  }
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="Style.css"/>
</head>
<body>
   <div class="menu">
    <ul class="no-list-style">
        <li onclick="submenuappear()"class="menu-item" ng-click="selectedAction = 1">Menu Item 1
            <ul class="no-list-style" ng-if="selectedAction == 1">
                <li id="sub-menu-item">Sub-menu item 1</li>
            </ul>
        </li>
        <li onclick="submenudisappear()" id="menu-item2">Menu item 2</li>
        <li onclick="submenudisappear()"id="menu-item3">Menu item 3</li>
    </ul>
    </div>
</body>
</html>

Я сделал фрагмент. При нажатии на первый пункт меню, элемент подменю будет виден на панели навигации. Затем, когда вы щелкнете по пункту меню 2 или 3, подменю снова исчезнет. Надеюсь, что это то, что вы ищете.

Другие вопросы по тегам