我是网络开发新手,正在尝试创建一个投资组合网站。我正在尝试创建一个全页导航栏。我正在使用 bootstrap 5,当我单击右侧的按钮时,导航栏可以工作,但我想在选择菜单项时自动关闭导航栏。我正在用不同的部分在一个体内创造一切。
HTML
<nav class="navbar fixed-top navbar-expand-lg">
<div class="container">
<a onclick="openMenu();" title="" class="btn">
<span></span>
<span></span>
</a>
<div class="menu">
<ul class="menu_list">
<li class="menu_list">
<a href="#home" title="" onclick="closeMenu();" class="menu_link">Home</a>
</li>
<li class="menu_list">
<a href="#about-me" title="" onclick="closeMenu();" class="menu_link">About</a>
</li>
<li class="menu_list">
<a href="#projects" title="" onclick="closeMenu();" class="menu_link">Projects</a>
</li>
<li class="menu_list">
<a href="#contact" title="" onclick="closeMenu();" class="menu_link">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
CSS
.btn{
position: absolute;
top: 21px;
right: 25px;
z-index: 3;
display: flex;
width: 20px;
height: 20px;
}
/*size of the button lines*/
.btn span{
position: absolute;
display: flex;
width: 20px;
height: 2px;
background: rgba(247,72,78,255);
transition: .5s;
}
/*position of each line within the button space*/
.btn span:nth-child(1){
top: 25%;
}
.btn span:nth-child(2){
top: 75%;
}
.btn.is-active span{
background: rgba(247,72,78,255);
}
/*transformation to X*/
.btn.is-active span:nth-child(1){
top: 50%;
transform: rotate(-45deg);
}
.btn.is-active span:nth-child(2){
top: 50%;
transform: rotate(45deg);
}
/*menu details*/
.menu {
background: rgb(0, 0, 0,0.60);
display: flex;
align-items: center;
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
padding: 100px;
z-index: 1;
transform: .5s;
opacity: 0;
visibility: hidden;
}
/*when active (clicked)*/
.menu.is-active{
transition: .5s;
opacity: 1;
visibility: visible;
}
javascript: open menu() 工作正常,当使用 btn 打开或关闭菜单时使用它。 closeMenu() 是我遇到的困难。我尝试进行选择并从 is-active 切换回 .menu,但它不起作用。
function openMenu(e){
let menu = document.querySelector('.menu');
let btn = document.querySelector('.btn');
menu.classList.toggle('is-active');
btn.classList.toggle('is-active');
e.preventDefault();
}
function closeMenu(){
let menu = document.querySelector('.menu.is-active');
let btn = document.querySelector('.btn.is-active');
menu.classList.toggle('.menu');
btn.classList.toggle('.btn');
e.preventDefault();
}
感谢任何帮助。
最佳答案
在函数 closeMenu()
中,应选择 menu
和 btn
变量,而不使用 .is-active
code> 类,然后您可以切换该类 .is-active
function closeMenu(){
let menu = document.querySelector('.menu');
let btn = document.querySelector('.btn');
menu.classList.toggle('is-active');
btn.classList.toggle('is-active');
e.preventDefault();
}
关于javascript - 使用 javascript 切换 CSS 类选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70409236/