如何关闭下拉菜单时点击关闭下拉菜单?



我有麻烦,如何使下拉菜单的内容隐藏时,单击页面上的下拉菜单。我提供了下面的代码,需要一些帮助。请帮助解释正确的javascript代码。

<!-- html code -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>HTML 5 Boilerplate</title>
<link rel="stylesheet" href="styles.css">
<script src="https://kit.fontawesome.com/36947df53d.js" crossorigin="anonymous"></script>
<script src="script.js"></script>
<script src="jquery-3.6.0.min.js"></script>
</head>

<body>
<div class = "header">
<div class = "logo">Logo</div>
<div class = "dropdown">
<div class ="button">
<a href = "#" id ="btn" onclick="myFunction()" class="dropbtn"><i class="fa-solid fa-bars" id ="button"></i></a>
</div>
<div class = "dropdown-content" id = "myDropdown">
<nav>
<ul class ="dropdownMenu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Store</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</div>
</div>
</div>
</body>
</html>

这是网页的CSS代码。

/* css code */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100&family=Open+Sans:wght@300;400&display=swap');

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

.header {
height: 80px;
background-color: lightblue;
box-shadow: 0px 3px #888888;
display: flex;
justify-content: space-between;
line-height: 55px;
z-index: 99;
}
ul {
list-style-type: none;

}
ul li {
display: inline-block;
padding: 10px 10px;

}
ul li a {
text-decoration: none;
color: black;
font-family: 'Montserrat', sans-serif;
}
.logo {
padding: 10px 10px;
font-family: 'Montserrat', sans-serif;
font-size: 3em;
}
#button {
display: none;
}
@media only screen and (max-width: 550px) {
body {
padding: 0;
margin: 0;
background-color: lightblue;
}

.header {
display: flex;
flex-direction: column;
/*z-index: 99;*/

}
ul li {
display: flex;
flex-direction: column;
width: 100%;
padding: 0;

}

ul li a {
display: flex;
justify-content: center;
align-items: center;
padding: 0;
margin: 0;
height: 5em;
width: 100%;
text-align: center;
border-bottom: 1px solid black;
color: black;
font-size: 20px;
font-weight: 800;
justify-content: center;

}
a:hover {
background-color: lightblue;
}
#button {
display: inline;
top: 0;
right: 0;
padding: 30px;
/*z-index: 98;*/
position: absolute;
color: black;
}
.dropdown-content {
display: none;
background-color: white;
/*z-index: 97;*/
}
.show {display:block;}

}

这是网页的javascript代码。

// JS Code
// Not sure how to close dropdown menu when page is clicked off of dropdown menu on page
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}

您可以在整个页面上添加一个点击处理程序,并使用它来切换下拉菜单。虽然需要对下拉菜单本身进行一些检查和防止冒泡,但这样应该可以工作:

document.documentElement.addEventListener(
'click', 
() => document.getElementById("myDropdown").classList.toggle("hide"), 
false
);

最新更新