【发布时间】:2021-04-27 19:07:58
【问题描述】:
document.addEventListener("DOMContentLoaded", () => {
let menuBtn = document.querySelector("#menu-button");
let menu = document.querySelector("#menu");
let menuItems = menu.getElementsByTagName("li");
menuBtn.addEventListener("click", e => {
if (e.target.innerText === ("✕")) {
e.target.innerText = "☰";
[...menuItems].forEach(item => item.style.display = "none");
} else if (e.target.innerText === "☰") {
e.target.innerText = "✕";
[...menuItems].forEach(item => item.style.display = "block");
}
});
});
header {
width: 100%;
height: 100px;
}
#menu {
display: flex;
flex-direction: row;
margin: 0 auto;
justify-content: space-around;
font-size: 2rem;
}
#menu-button {
display: none;
}
li {
list-style-type: none;
}
a {
text-decoration: none;
color: rgb(0, 0, 0);
}
@media screen and (max-width: 1050px) {
#menu {
flex-direction: column;
width: 100%;
height: 100%;
}
#menu li {
padding: 1.5rem;
display: none;
}
#menu-button {
display: block;
font-size: 3rem;
cursor: pointer;
outline: none;
border: none;
}
}
<header>
<nav>
<button id="menu-button">☰</button>
<ul id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
这是一个简单的导航菜单,采用桌面优先方法,使用flexbox。
- 视口小于 1050 像素,因此显示汉堡按钮
- 单击汉堡按钮以下拉形式显示菜单。汉堡按钮变为“X”。
- “X”被点击。 JS 代码将所有
li元素更改为display: none - 问题:视口增加到超过 1050 像素的断点。由于
li元素已更改为display: none,因此未显示菜单。
不胜感激有关如何解决此问题的建议。
还有,小而烦人的问题。
- 视口小于 1050 像素,因此显示汉堡按钮
- 单击汉堡按钮以下拉形式显示菜单。汉堡按钮变为“X”。
- 视口增加到超过 1050p 的断点,然后回到断点以下。由于所有
li元素在JS 代码中都设置为display: block,因此会出现下拉菜单。我想让它在视口大小减小时出现汉堡图标。
感谢大家的帮助!
【问题讨论】:
标签: javascript html css navbar