我正在建立一个新网站,并希望具有可移动访问的下拉菜单。我没有悬停下拉菜单,而是尝试构建可点击的下拉菜单。
我尝试查看其他人做了什么,但是到目前为止,还没有找到解决这个问题的人,尽管我希望对于大多数网站建设者来说,这相当容易。关于HTML / CSS,有很多我尚不了解的基本知识。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
.navbar {
overflow: hidden;
background-color: #333;
font-family: Arial, Helvetica, sans-serif;
}
.navbar a {
float: left;
font-size: 16px;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown .dropbtn {
cursor: pointer;
font-size: 16px;
border: none;
outline: none;
color: white;
padding: 14px 16px;
background-color: inherit;
font-family: inherit;
margin: 0;
}
.navbar a:hover, .dropdown:hover .dropbtn, .dropbtn:focus {
background-color: red;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
float: none;
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content a:hover {
background-color: #ddd;
}
.show {
display: block;
}
.wrapper {
width: 800px;
margin: auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="navbar">
<a href="#home">Info</a>
<div class="dropdown">
<button class="dropbtn" onclick="myFunction()">Our methods
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content" id="myDropdown">
<a href="#link">Answer 1</a>
<a href="#link">Answer 2</a>
<a href="#link">Answer 3</a>
</div>
</div>
<div class="dropdown">
<button class="dropbtn" onclick="myFunction()">Products
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content" id="myDropdown">
<a href="#link">This is the first option</a>
<a href="#link">This is the second option</a>
</div>
</div>
</div>
</div>
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
// Close the dropdown if the user clicks outside of it
window.onclick = function(e) {
if (!e.target.matches('.dropbtn')) {
var myDropdown = document.getElementById("myDropdown");
if (myDropdown.classList.contains('show')) {
myDropdown.classList.remove('show');
}
}
}
</script>
</body>
</html>
目标是拥有一个导航栏,该导航栏具有多个按钮,单击这些按钮会产生一个下拉菜单。取而代之的是,无论我单击哪个按钮,总是打开第一个(在此示例中为“答案”而不是“选项”)。
我如何让每个人打开自己的下拉菜单?
答案 0 :(得分:1)
您遇到的是由于两个下拉div中都具有相同的“ id”属性。尽管浏览器允许,但HTML ID中的ID应该是唯一的(正是这种情况)。
不管有其他更好的方法来实现此目的,针对您的情况的一种快速解决方案是:
id="myDropdown1"
和id="myDropdown2"
,以避免重复。onclick="myFunction(1)"
和onclick="myFunction(2)"
。myFunction
以考虑该数字,例如 function myFunction(num) {
document.getElementById("myDropdown" + num).classList.toggle("show");
}
祝你好运!