【发布时间】:2020-01-14 03:09:53
【问题描述】:
请先看页面了解https://ibnul.neocities.org/_temporary/au2p10/au2p10.html
这里我有多个下拉菜单,需要在单击它们各自的开启按钮(3 条形图标)时打开。而且它还需要在再次单击该图标或单击页面上的其他位置时关闭。
所以我设法在单击相应按钮时打开菜单,并在再次单击或单击页面外部某处时关闭。
但是,如果我单击第一个按钮并且没有再次单击相同的按钮或没有单击页面上的其他位置,如果我单击第二个按钮,则第二个菜单将在第一个菜单打开时打开,并且如果我对之后的第三个菜单第三个菜单也将在前两个菜单打开时打开。所以你会看到所有三个菜单同时打开。
这就是问题所在。我想在单击下一个菜单按钮时关闭所有上一个菜单,或者在单击上一个菜单按钮时关闭所有下一个菜单。关键是一次不应该有多个菜单可见。
我只想打开最后一个,单击下一个时应该关闭上一个,这样您一次看不到多个下拉菜单。
而且我不想在 html 文件上添加任何 id 名称,因为我需要多次复制粘贴此 html 代码,因此您应该只通过使用相同类名来识别元素的 javascript 给我一个解决方案无论我复制多少次 html 代码,菜单的工作方式都是一样的,并且一次不会打开一个以上的菜单。
请用纯 javascript 显示。
<!DOCTYPE html>
<html lang='en-US'>
<head>
<title>au2p10</title>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<style>
* {
margin: 0px;
padding: 0px;
font-family:'Segoe UI', sans-serif;
}
a {
text-decoration: none;
}
.res-loc-shre-con {
display: flex;
justify-content: flex-end;
padding: 30px;
}
.edit-menu-icon-con {
position: relative;
margin: 10px 0px 70px 0px;
}
.edit-menu-text-icon-con {
display: flex;
align-items: center;
}
.edit-menu-sdtext {
font-size: 14px;
color: #0086bf;
padding: 0px 8px 0px 0px;
}
.edit-menu-icon-image {
width: 25px;
height: 20px;
padding: 4px 4px 4px 4px;
}
.eidit-menu-icon-item-con {
position: absolute;
z-index: 2;
top: 35px;
right: 0px;
background-color: white;
border: 0.9px solid #dadada;
padding: 4px 0px 4px 0px;
width: 200px;
min-height: 100px;
}
.edit-menu-drop-down-box {
position: absolute;
z-index: 2;
top: 42px;
right: -1px;
width: 180px;
padding: 3px 0px 3px 0px;
background-color: white;
border: 0.9px solid rgb(219, 219, 219);
display: none;
}
.edit-menu-drop-down-box:focus {
outline: 0px;
}
.show-edit-menu-drop-down-box {
display: block;
}
.edit-menu-drop-down-cone-box {
position: relative;
}
.edit-menu-dorp-down-cone {
position: absolute;
z-index: -1;
top: -11px;
right: 9px;
width: 14px;
height: 14px;
background-color: rgb(255, 255, 255);
border-left: 0.9px solid rgb(189, 189, 189);
border-top: 0.9px solid rgb(189, 189, 189);
transform: rotate(45deg);
}
.edit-menu-selectitem {
display: flex;
padding: 5px 10px 5px 10px;
}
.edit-menu-selectitem:hover {
background-color: rgb(238, 238, 238);
}
.edit-menu-select-text {
font-size: 15px;
color: #7c7c7c;
padding: 3px 5px 3px 5px;
}
</style>
</head>
<!-- start -->
<body>
<div class='res-loc-shre-con'>
<div class='edit-menu-icon-con'>
<div class='edit-menu-text-icon-con'>
<p class='edit-menu-sdtext'>Manage au2</p>
<img class='edit-menu-icon-image' src='menu-icon-blue.svg' alt=''>
</div>
<div class='edit-menu-drop-down-box'>
<div class='edit-menu-drop-down-cone-box'>
<div class='edit-menu-dorp-down-cone'></div>
</div>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Edit</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Make Featured</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Comment</p>
</div>
</a>
</div>
</div>
</div>
<div class='res-loc-shre-con'>
<div class='edit-menu-icon-con'>
<div class='edit-menu-text-icon-con'>
<p class='edit-menu-sdtext'>Manage au2</p>
<img class='edit-menu-icon-image' src='menu-icon-blue.svg' alt=''>
</div>
<div class='edit-menu-drop-down-box'>
<div class='edit-menu-drop-down-cone-box'>
<div class='edit-menu-dorp-down-cone'></div>
</div>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Edit</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Make Featured</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Comment</p>
</div>
</a>
</div>
</div>
</div>
<div class='res-loc-shre-con'>
<div class='edit-menu-icon-con'>
<div class='edit-menu-text-icon-con'>
<p class='edit-menu-sdtext'>Manage au2</p>
<img class='edit-menu-icon-image' src='menu-icon-blue.svg' alt=''>
</div>
<div class='edit-menu-drop-down-box'>
<div class='edit-menu-drop-down-cone-box'>
<div class='edit-menu-dorp-down-cone'></div>
</div>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Edit</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Make Featured</p>
</div>
</a>
<a class='edit-menu-itemlink' href=''>
<div class='edit-menu-selectitem'>
<p class='edit-menu-select-text'>Comment</p>
</div>
</a>
</div>
</div>
</div>
<script>
var edit_menu_btns = document.querySelectorAll('.edit-menu-icon-image');
edit_menu_btns.forEach(btn => {
btn.addEventListener('click', show_edit_menu_dropdown_box);
});
function show_edit_menu_dropdown_box(e) {
var card = e.target.closest('.edit-menu-icon-con');
var edit_menu_dropdown_box = card.querySelector('.edit-menu-drop-down-box');
edit_menu_dropdown_box.classList.toggle('show-edit-menu-drop-down-box');
window.addEventListener('click', function(event) {
if (!event.target.matches('.edit-menu-icon-image')) {
var editMenuDropdowns = document.getElementsByClassName('edit-menu-drop-down-box');
for (var j = 0; j < editMenuDropdowns.length; j++) {
var openEditMenuDropdown = editMenuDropdowns[j];
if (openEditMenuDropdown.classList.contains('show-edit-menu-drop-down-box')) {
openEditMenuDropdown.classList.remove('show-edit-menu-drop-down-box');
}
}
}
});
}
</script>
</body>
我已将它放在一个 html 文件 (https://ibnul.neocities.org/_temporary/au2p10/au2p10.html) 中,因此您可以轻松下载该页面并在您的代码编辑器上试用。 如果您不理解我的问题的任何部分,请发表评论。
【问题讨论】:
标签: javascript html css