【发布时间】:2019-12-20 01:49:43
【问题描述】:
我有一个带有汉堡包切换的移动导航菜单,可以在点击时成功打开菜单。我还在单击时向切换按钮添加动画。我正在使用背景来关闭导航菜单,但我也希望能够在单击切换时关闭菜单,并且如果单击背景,则在菜单关闭时切换动画。以下是我目前的代码,任何帮助将不胜感激。
var backdrop = document.querySelector(".backdrop");
var toggleButton = document.querySelector(".toggle-container");
var mobileNav = document.querySelector(".mobile-nav");
backdrop.addEventListener("click", function() {
mobileNav.classList.remove("open");
closeMenu();
});
function closeMenu() {
if (toggleButton) {
mobileNav.classList.remove("open");
}
backdrop.classList.remove("open");
toggleButton.classList.remove("active");
}
toggleButton.addEventListener("click", function() {
mobileNav.classList.add("open");
toggleButton.classList.add("active");
backdrop.classList.add("open");
});
function toggleNav(x) {
x.classList.toggle("change");
}
.backdrop {
position: fixed;
display: none;
top: 197px;
left: 0;
z-index: 100;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.5);
}
.toggle-container {
display: inline-block;
cursor: pointer;
margin: 10px;
z-index: 105;
}
.bar1,
.bar2,
.bar3 {
width: 2rem;
height: 5px;
background-color: black;
margin: 6px 0;
transition: 0.4s;
}
.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-9px, 6px);
transform: rotate(-45deg) translate(-9px, 6px);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-8px, -8px);
}
.mobile-nav {
display: none;
position: fixed;
z-index: 101;
top: 60px;
left: 0;
background: white;
width: 30%;
height: 100vh;
}
.mobile-nav__items {
width: 90%;
height: 100%;
list-style: none;
margin: 10% auto;
padding: 0;
font-family: 'Quantico', sans-serif;
}
.mobile-nav__item {
margin: 1rem 0;
}
.mobile-nav__item a {
font-size: 1.5rem;
text-decoration: none !important;
color: #15396c;
}
@media (min-width: 60rem) {
.toggle-container {
display: none;
}
}
.open {
display: block !important;
}
<div class="backdrop"></div>
<div class="toggle-container" onclick="toggleNav(this)">
<div class="bar1">
</div>
<div class="bar2">
</div>
<div class="bar3">
</div>
</div>
<nav class="mobile-nav">
<ul class="mobile-nav__items">
<li class="mobile-nav__item">
<a href="#">Home
</a>
</li>
<li class="mobile-nav__item">
<a href="#">Link 1
</a>
</li>
<li class="mobile-nav__item">
<a href="#">Link 2
</a>
</li>
<li class="mobile-nav__item">
<a href="#">Link 3
</a>
</li>
<li class="mobile-nav__item">
<a href="#">Link 4
</a>
</li>
</ul>
</nav>
【问题讨论】:
-
欢迎迈克!我试图运行您的代码,但它似乎没有正常工作。我已经更新了问题以将其变成一个工作示例,但似乎我们缺少一些样式/元素/等。您能否编辑问题以使其正常工作,以便我们提供帮助?
-
谢谢布雷特!我添加了一些缺少的 css。
-
背景元素在哪里?
-
您可以创建一个 sn-p 来添加必要的 HTML、CSS 和 JS 以便我们可以看到结果 - meta.stackoverflow.com/questions/358992/…
-
对不起,我以为我忘记了什么,我在 HTML 中添加了背景元素
标签: javascript css css-transforms