导航栏切换按钮不适用于 toggleClass("active");
Navbar togglebutton not working on toggleClass("active");
这刚好发生在我喝咖啡休息后。每当我调整浏览器屏幕大小时,我的切换导航按钮就不再工作了。我认为这是关于 toggleClass("active");
看看我的代码
$(document).ready(function() {
$(window).scroll(function() {
if (this.scrollY > 20) {
$('.navbar').addClass("sticky");
} else {
$('.navbar').removeClass("sticky");
}
});
$('.menu-btn').click(function() {
$('.navbar .menu').toggleClass("active");
$('.menu-btn i').toggleClass("active");
})
});
@media(max-width: 977px) {
.max-width {
padding: 0 50px;
}
.menu-btn {
display: block;
z-index: 999;
}
.menu-btn i.active:before {
content: "\f00d";
}
.navbar .menu {
position: fixed;
height: 100vh;
width: 100%;
left: -100%;
top: 0;
background: black;
text-align: center;
padding-top: 80px;
transition: all 0.3s ease;
}
.navbar .menu.active {
left: 0;
}
.navbar .menu li {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav class="navbar">
<div class="max-width">
<div class="logo"><a href="#">D.N.A <span>Builders</span></a></div>
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Skills</a></li>
<li><a href="#">Teams</a></li>
<li><a href="#">Contact</a></li>
</ul>
<div class="menu-btn">
<i class="fa fa-bars"></i>
</div>
</div>
</nav>
我尝试了不同的调试方法,但当我将警报 1 置于其上时,点击功能似乎正常工作。但是 toggleClass 没有被执行。
据我所知,您使用的是@media 规则,而此 CSS 在规则内,因此当最大屏幕尺寸较小时,您的 css 仅在该规则内工作超过 977px,那有什么问题吗?如果您在大屏幕上遇到错误,它可以正常工作,这意味着您没有在其他屏幕的 css 代码中设置此条件
检查此代码段以防所有屏幕都需要它
$(document).ready(function() {
$(window).scroll(function() {
if (this.scrollY > 20) {
$('.navbar').addClass("sticky");
} else {
$('.navbar').removeClass("sticky");
}
});
$('.menu-btn').click(function() {
$('.navbar .menu').toggleClass("active");
$('.menu-btn i').toggleClass("active");
})
});
.max-width {
padding: 0 50px;
}
.menu-btn {
display: block;
position: absolute;
z-index: 999;
background:gray;
}
.menu-btn i.active:before {
top: 0;
position: relative;
}
.navbar .menu {
position: fixed;
height: 100vh;
width: 100%;
left: -100%;
top: 2rem;
background: black;
text-align: center;
padding-top: 80px;
transition: all 0.3s ease;
}
.navbar .menu.active {
left: 0;
}
.navbar .menu li {
display: block;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<nav class="navbar">
<div class="max-width">
<div class="logo"><a href="#">D.N.A <span>Builders</span></a></div>
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Skills</a></li>
<li><a href="#">Teams</a></li>
<li><a href="#">Contact</a></li>
</ul>
<div class="menu-btn">
<i class="fa fa-bars">[ X ]</i>
</div>
</div>
</nav>
这刚好发生在我喝咖啡休息后。每当我调整浏览器屏幕大小时,我的切换导航按钮就不再工作了。我认为这是关于 toggleClass("active"); 看看我的代码
$(document).ready(function() {
$(window).scroll(function() {
if (this.scrollY > 20) {
$('.navbar').addClass("sticky");
} else {
$('.navbar').removeClass("sticky");
}
});
$('.menu-btn').click(function() {
$('.navbar .menu').toggleClass("active");
$('.menu-btn i').toggleClass("active");
})
});
@media(max-width: 977px) {
.max-width {
padding: 0 50px;
}
.menu-btn {
display: block;
z-index: 999;
}
.menu-btn i.active:before {
content: "\f00d";
}
.navbar .menu {
position: fixed;
height: 100vh;
width: 100%;
left: -100%;
top: 0;
background: black;
text-align: center;
padding-top: 80px;
transition: all 0.3s ease;
}
.navbar .menu.active {
left: 0;
}
.navbar .menu li {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav class="navbar">
<div class="max-width">
<div class="logo"><a href="#">D.N.A <span>Builders</span></a></div>
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Skills</a></li>
<li><a href="#">Teams</a></li>
<li><a href="#">Contact</a></li>
</ul>
<div class="menu-btn">
<i class="fa fa-bars"></i>
</div>
</div>
</nav>
我尝试了不同的调试方法,但当我将警报 1 置于其上时,点击功能似乎正常工作。但是 toggleClass 没有被执行。
据我所知,您使用的是@media 规则,而此 CSS 在规则内,因此当最大屏幕尺寸较小时,您的 css 仅在该规则内工作超过 977px,那有什么问题吗?如果您在大屏幕上遇到错误,它可以正常工作,这意味着您没有在其他屏幕的 css 代码中设置此条件
检查此代码段以防所有屏幕都需要它
$(document).ready(function() {
$(window).scroll(function() {
if (this.scrollY > 20) {
$('.navbar').addClass("sticky");
} else {
$('.navbar').removeClass("sticky");
}
});
$('.menu-btn').click(function() {
$('.navbar .menu').toggleClass("active");
$('.menu-btn i').toggleClass("active");
})
});
.max-width {
padding: 0 50px;
}
.menu-btn {
display: block;
position: absolute;
z-index: 999;
background:gray;
}
.menu-btn i.active:before {
top: 0;
position: relative;
}
.navbar .menu {
position: fixed;
height: 100vh;
width: 100%;
left: -100%;
top: 2rem;
background: black;
text-align: center;
padding-top: 80px;
transition: all 0.3s ease;
}
.navbar .menu.active {
left: 0;
}
.navbar .menu li {
display: block;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<nav class="navbar">
<div class="max-width">
<div class="logo"><a href="#">D.N.A <span>Builders</span></a></div>
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Skills</a></li>
<li><a href="#">Teams</a></li>
<li><a href="#">Contact</a></li>
</ul>
<div class="menu-btn">
<i class="fa fa-bars">[ X ]</i>
</div>
</div>
</nav>