通过给定的css样式实现单击考勤管理、信息中心和协同办公的任一项,如果当前二级菜单是折叠状态,则展开,同时其余项折叠;如果当前二级菜单状态是展开,则折叠。
时间: 2023-10-16 22:07:14 浏览: 73
可以使用JavaScript来实现这个功能。首先,需要为每个二级菜单添加一个点击事件监听器。然后,在点击事件处理程序中,检查当前的二级菜单是否处于展开状态。如果是展开状态,则将其折叠,并将其它二级菜单折叠。如果是折叠状态,则将其展开,并将其它二级菜单折叠。
下面是一个示例代码,假设考勤管理、信息中心和协同办公的二级菜单分别具有 `attendance`、`information` 和 `collaboration` 的 `id` 值。
```html
<!-- HTML代码 -->
<ul class="nav">
<li><a href="#">首页</a></li>
<li>
<a href="#">考勤</a>
<ul id="attendance" class="sub-nav">
<li><a href="#">考勤记录</a></li>
<li><a href="#">考勤统计</a></li>
</ul>
</li>
<li>
<a href="#">信息</a>
<ul id="information" class="sub-nav">
<li><a href="#">公告</a></li>
<li><a href="#">通知</a></li>
</ul>
</li>
<li>
<a href="#">协同办公</a>
<ul id="collaboration" class="sub-nav">
<li><a href="#">日程安排</a></li>
<li><a href="#">任务管理</a></li>
</ul>
</li>
</ul>
<!-- CSS样式 -->
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav > li {
float: left;
position: relative;
}
.nav > li > a {
display: block;
padding: 10px 20px;
text-decoration: none;
color: #333;
}
.sub-nav {
display: none;
position: absolute;
top: 100%;
left: 0;
z-index: 1;
}
.sub-nav > li > a {
display: block;
padding: 10px 20px;
background-color: #f7f7f7;
color: #333;
}
.sub-nav > li > a:hover {
background-color: #e7e7e7;
}
.sub-nav.show {
display: block;
}
```
```javascript
// JavaScript代码
const navItems = document.querySelectorAll('.nav > li');
navItems.forEach(item => {
const subNav = item.querySelector('.sub-nav');
item.addEventListener('click', () => {
if (subNav.classList.contains('show')) {
subNav.classList.remove('show');
} else {
const shownNav = document.querySelector('.sub-nav.show');
if (shownNav) {
shownNav.classList.remove('show');
}
subNav.classList.add('show');
}
});
});
```
在上面的代码中,我们首先使用 `document.querySelectorAll` 方法选择所有一级菜单项,并为每个一级菜单项添加一个点击事件监听器。在事件处理程序中,使用 `event.target` 获取当前被点击的元素,然后查找它的子元素中是否存在二级菜单。如果存在,则检查当前二级菜单是否处于展开状态,如果是则折叠它,否则将其展开并折叠其它二级菜单。最后,使用 `classList` 属性添加或删除 `show` 类来控制二级菜单的显示或隐藏。
阅读全文