Что не так в вашем коде, так это то, что вы вызываете оба метода одновременно. Когда вы щелкаете по пункту меню, в этом порядке вызываются и closeNav
, и openNav
, поэтому вы всегда будете видеть его открытым. Вы можете заметить это, добавив console.log("open")
и console.log("close")
в свои методы. Это происходит потому, что, если вы щелкаете по пункту меню, вы также щелкаете меню позади:)
Вам следует рассмотреть возможность использования класса CSS
и classList.toggle("open-nav")
. См. Пример ниже:
function toggleNav() {
document.querySelector("div.slider").classList.toggle("open-nav");
}
.open-nav {
width: 250px;
box-shadow: -2px 0px 5px -1px rgba(0,0,0,0.75);
}
<nav>
<a href="index.html"><div class="logo"></div></a>
<div class="menu" onclick="toggleNav()">
<div class="slider">
<a href='#Home'>Home</a>
<a href="#Services">Services</a>
<a href="#Portfolio">Portfolio</a>
<a href="#Team">Team</a>
<a href="#Contact">Contact</a>
</div>
</div>
</nav>