toggle classList('open')正在工作并出现在检查元素中,但网页未显示样式

问题描述 投票:0回答:1

我想在单击 #menu-icon 后使用 .nav 中的切换添加类 .open,单击 #menu-icon 后类“open”出现在检查元素中,但 .nav 中未显示任何样式。打开。我为什么要这么做?

ps:我使用 bootstrap 来制作导航

HTML

<!-- logo -->
    <div class="logo">
        <img src="assets/logo.png" alt="logo g's shop">
    </div>
    <i class="ri-menu-line" id="menu-icon"></i>

<!-- nav -->
    <ul class="nav nav-pills nav-fill m4">
      <li class="nav-item">
        <a class="nav-link active .bg-white" aria-current="page" href="#">ALL ITEM</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">SMARTPHONES</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">LAPTOPS</a>
      </li>
    </ul>

CSS

.nav {
    position: absolute;
    z-index: 10001;
    top: 65px;
    right: 30px;
    width: 270px;
    background-color: #f3efef;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    border-radius: 4px;
    transition: all .50s ease;
    font-size: 14px;
}

.nav-item {
    margin-top: -2px;
    border-radius: 4px;
}

#menu-icon {
    display: block;
}

.nav .open {
    left: 0;
}

JS

let menu = document.querySelector('#menu-icon');
let navbar = document.querySelector('.nav');

menu.addEventListener("click", function() {
    navbar.classList.toggle('open');
});

我希望“.nav .open”正在工作,即“.nav”在我单击#menu-icon后消失(变成左边:0;),最好使用jquery而不是vanilla js

javascript html jquery css bootstrap-4
1个回答
0
投票

您的代码无法正常工作的原因只是您的 CSS 选择器。

您的代码在这里:

.nav .open {
    left: 0;
}

将以类 open 的 nav 子元素为目标。

您想要的是在课程开放时定位导航:

/*  Note there is no space */
.nav.open {
    left: 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.