javascript - 调整大小和按下按钮时无法隐藏菜单
问题描述
我正在使用这段代码:
@media screen and (max-width: 850px) {
#side-menu {
display: none;
}
button {
display: block;
}
}
当我调整窗口大小时隐藏我的侧面菜单并显示一个按钮。我还想在按下按钮时显示和隐藏菜单。为此,我正在使用以下代码:
function showMenu() {
var sideMenu = document.getElementById("side-menu");
if (sideMenu.style.display === "none") {
sideMenu.style.display = "block";
}
else {
sideMenu.style.display = "none";
}
}
当我用按钮隐藏时,当我调整窗口大小时菜单不会重新出现。我相信这是因为javascript将主要样式更改为显示:无,因此一旦超出范围,它就会应用主要样式。现在它是 display: none 所以它不会再次出现。我怎样才能让它按我的意图工作?此外,由于某种原因,需要单击两次才能显示菜单。
<ul id="side-menu">
<li><a href="#">example1</a></li>
<li><a href="#">example2</a></li>
<li><a href="#">example3</a></li>
<li><a href="#">example4</a></li>
</ul>
html 以备不时之需。
解决方案
您必须先检查 display === "block" 是否可以解决多次点击问题。
包括媒体查询以管理大于 850 像素的窗口宽度以显示列表和隐藏按钮。
编辑:更新片段以使用原始问题中提供的列表。
function showMenu() {
var sideMenu = document.getElementById("side-menu");
if (sideMenu.style.display === "block") {
sideMenu.style.display = "none";
}
else {
sideMenu.style.display = "block";
}
}
@media screen and (min-width: 850px) {
#side-menu {
display: block;
}
button {
display: none;
}
}
@media screen and (max-width: 850px) {
#side-menu {
display: none;
}
button {
display: block;
}
}
<div id="side-menu">
<ul>
<li><a href="#">example1</a></li>
<li><a href="#">example2</a></li>
<li><a href="#">example3</a></li>
<li><a href="#">example4</a></li>
</ul>
</div>
<button onclick="showMenu()">click me</button>
推荐阅读
- android - 我想在颤振中使用 better_palyer 包自动重复视频
- sql - 如何根据oracle sql中的某些条件删除重复记录?
- r - 在 SQLite 中用 UNIQUE 填充表列
- javascript - 在javascript中对dom节点使用'in'语句时返回false
- typo3 - TYPO3 Symfony 命令控制器参数以 -(减号)开头导致错误
- javascript - 当我们只使用一些东西时,为什么整个模块被加载到页面上?
- laravel - Laravel 导出中的列格式
- visual-studio - Blazor Web 程序集 Visual Studio“脚本文档”包含大量对 BouncyCastle 的引用,导致 VS 冻结
- json - 如何从 JSON 中过滤元素
- css - echarts高度不适配,上下有空