javascript - 单击链接或导航外部时如何关闭导航?
问题描述
每个人,
我才刚刚开始写我的第一个网站。现在我遇到了第一个问题,没有你的帮助我无法解决。
如何更改我的 Javascript,以便通过单击其中一个链接并单击元素外部来关闭我的 NAV 元素?
你知道我的意思?
我希望你能帮助我,非常感谢你!
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link href="Design.css" rel="stylesheet" type="text/css">
</head>
<body>
<header>
<div class="header">
<img src="" onClick="myFunction()"></img>
<h1>
</h1>
</div>
<hr>
</header>
<script>
function myFunction() {
var x = document.getElementById("myNAV");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
</script>
<nav id="myNAV">
<p> </p>
<p>WORK</p>
<p> <a href="#"></a> </p>
<p> <a href="#"></a> </p>
<p> <a href="#"></a> </p>
<p> <a href="#"></a> </p>
<p> <a href="#"></a> </p>
<p> <a href="#"></a> </p>
<p> </p>
<p>ME</p>
<p></p>
<p></p>
<p>AARAU</p>
<p> <a href="</a> </p>
<p> </p>
<p> <a href="#">IMPRESSUM</a> </p>
<p> </p>
</nav>
</body>
</html>
@charset "UTF-8";
html {
height: 100%;
margin-top: -13px;
margin-left: -7px;
}
body {
font-family: Helvetica, "Helvetica Neue", "Myriad Pro", "sans-serif", "Frutiger LT Std 65 Bold";
height: 100%;
min-height: 100%;
}
body header hr {
border: none;
height: 2px;
color: black;
background-color: #333333;
}
hr {
border: none;
height: 1px;
/* Set the hr color */
color: #333; /* old IE */
background-color: #333; /* Modern Browsers */
margin-top: 0px;
}
body header h1 {
font-weight: bold;
text-indent: 20px;
height: 41px;
font-size: 120%;
display: table-cell;
vertical-align: middle
}
.header {
height: 41px;
}
body header img {
float: left;
width: 56px;
height: 41px;
}
#myNAV {
background-color: #01FFFF;
width: 50%;
height: 100%;
margin-top: -17px;
padding-top: 0px;
min-width: 500px;
}
body header {
height: 42px;
}
#myNAV p {
font-size: 120%;
font-weight: bold;
text-indent: 76px;
padding-top: 10px;
margin-top: 19px;
clear: left;
}
/* unvisited link */
#myNAV p a:link {
color: #000000;
text-decoration: none;
}
/* visited link */
#myNAV p a:visited {
color: #000000;
text-decoration: none;
}
/* mouse over link */
#myNAV p a:hover {
color: #F8F8F8;
text-decoration: none;
}
/* selected link */
#myNAV p a:active {
color: #F1F1F1;
text-decoration: none
}
这是演示链接:
解决方案
您需要将单击事件侦听器绑定到 DOM
//Store the nav in a variable
var nav = document.getElementById('myNAV')
var domClickHandler = function(event){
nav.style.display = 'none'
}
document.addEventListener('click', domClickHandler)
也像这样修改你的切换功能
function myFunction(event) {
// this would stop the event from reaching the DOM click listener
event.stopPropagation()
var x = document.getElementById("myNAV");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
推荐阅读
- java - 如何确定 A* 中的最终路径
- c++ - Makefile 用 main opencv 编译一个类
- java - 在 multipart/form-data (Java/Android) 中上传 JSON 文件
- xml - 如何在 Azure .Net Core Web App 中处理 XML
- javascript - 无法从 vue 导入 vue
- javascript - 为什么 undefined 加上 undefined 等于 Javascript 中的 Nan
- r - 从数据框中的每 n 行中选择一系列行
- python-3.x - Nvidia-smi 不显示任何进程
- python - 这个 colidity 挑战(Zinc 2018)测试用例是错误的吗?
- html - 更改背景宽度时,它也会更改容器位置