首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当单击另一个父级时隐藏父级的子菜单内容

是一个常见的前端开发需求,通常在网页或应用程序的导航菜单中使用。这个功能可以提升用户体验,使界面更加简洁和易于操作。

实现这个功能的方法有很多种,以下是一种常见的实现方式:

  1. HTML结构:使用嵌套的无序列表(ul)和列表项(li)来创建菜单。每个父级菜单项都包含一个子菜单的无序列表。
代码语言:html
复制
<ul class="menu">
  <li class="parent">
    <a href="#">父级菜单1</a>
    <ul class="submenu">
      <li><a href="#">子菜单1</a></li>
      <li><a href="#">子菜单2</a></li>
      <li><a href="#">子菜单3</a></li>
    </ul>
  </li>
  <li class="parent">
    <a href="#">父级菜单2</a>
    <ul class="submenu">
      <li><a href="#">子菜单4</a></li>
      <li><a href="#">子菜单5</a></li>
      <li><a href="#">子菜单6</a></li>
    </ul>
  </li>
</ul>
  1. CSS样式:使用CSS样式来控制菜单的显示和隐藏。初始状态下,子菜单应该被隐藏。
代码语言:css
复制
.submenu {
  display: none;
}

.parent.active .submenu {
  display: block;
}
  1. JavaScript交互:使用JavaScript来处理菜单的点击事件,当点击父级菜单时,切换其active类,同时隐藏其他父级菜单的子菜单。
代码语言:javascript
复制
var parents = document.querySelectorAll('.parent');

parents.forEach(function(parent) {
  parent.addEventListener('click', function() {
    // 切换active类
    this.classList.toggle('active');
    
    // 隐藏其他父级菜单的子菜单
    var siblings = this.parentNode.children;
    for (var i = 0; i < siblings.length; i++) {
      if (siblings[i] !== this) {
        siblings[i].classList.remove('active');
      }
    }
  });
});

这样,当单击一个父级菜单时,它的子菜单会显示出来;当单击另一个父级菜单时,之前显示的子菜单会被隐藏,同时新点击的父级菜单的子菜单会显示出来。

这个功能在各种网站和应用程序中都有广泛的应用,特别是在具有多级导航菜单的复杂界面中。通过合理的设计和交互,可以提升用户对菜单的操作效率和体验。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS获取节点兄弟,,元素方法

2015-08-18 03:48:27 下面介绍JQUERY,兄弟节点查找方法 jQuery.parent(expr)  找父亲节点,可以传入expr进行过滤,比如$("span").parent...()或者$("span").parent(".class") jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于元素 jQuery.children...(expr).返回所有节点,这个方法只会返回直接孩子节点,不会返回所有的子孙节点 jQuery.contents(),返回下面的所有内容,包括节点和文本。...(),返回所有之前兄弟节点 jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点 jQuery.nextAll(),返回所有之后兄弟节点 jQuery.siblings(),返回兄弟姐妹节点...jQuery.filter()是从初始jQuery对象集合中筛选出一部分,而jQuery.find()返回结果,不会有初始集合中内容,比如$("p"),find("span"),是从元素开始找

9.2K10

System.InvalidOperationException:“寄宿 HWND 必须是指定窗口。”

试图在 WPF 窗口中嵌套显示 Win32 窗口时候,你有可能出现错误:“寄宿 HWND 必须是指定窗口。”。 这是很典型 Win32 错误,本文介绍如何修复此错误。...一般情况下我们当然不会这么去做,但是如果我们要跨越进程边界来完成 WPF 渲染内容融合时候,就需要嵌入一个新窗口了。...问题 你有可能在调试嵌入窗口代码时候遇到错误: System.InvalidOperationException:“寄宿 HWND 必须是指定窗口。”...原因和解决办法 出现此错误,是因为同一个窗口被两次设置为同一个窗口窗口。...具体来说,就是 A 窗口使用 HwndHost 设置成了 B 窗口,随后 A 又通过一个新 HwndHost 设置成了新窗口。

21430

C#报错——(Winform) 在某个线程上创建控件不能成为在另一个线程上创建控件

问题点描述:   我新建一个线程,并在这个线程中,把某个控件去掉或者更改,导致报这个异常 网上解析如下:   “Windows 窗体”使用单线程单元 (STA) 模型,因为“Windows 窗体...STA 模型要求需从控件非创建线程调用控件上任何方法必须被封送到(在其上执行)该控件创建线程。...如果您在控件中为大量占用资源任务使用多线程,则用户界面可以在背景线程上执行一个大量占用资源计算同时保持可响应。 用人话描述为:控件是属于主线程(UI线程),不可以跨线程修改其父。...this.Controls.Add(tb); } } 看起来感觉很绕,而且很麻烦,又要新建方法,又要新建委托 所以我把它简化如下:           //使用拉姆达表达式创建一个委托,委托里面修改控件...,委托里面再修改控件 new Thread(() => this.Invoke(delega1)).Start(); }

3.2K41

js鼠标事件 clientX、clientY、offsetX、offsetY、layerX、layerY、pageX、 pageY、screenX、screenY「建议收藏」

MouseEvent类别有以下: mousedown 鼠标按下 mouseup 鼠标释放 click 左键单击 dblclick 左键双击 mousemove 鼠标移动 mouseover 鼠标经过...区别:mouseover和mouseout元素也会触发,可以冒泡触发 区别:mouseenter和mouseleave是针对侦听对象触发,阻止了冒泡 阻止鼠标的默认事件 e.preventDefault...() e.returnValue=false;//IE8 及以下兼容写法 return false;//IE兼容写法,只用作on事件阻止默认事件 去除单击右键菜单 document.body.addEventListener...layerX,layerY layerX,layerY 往上找有定位属性元素左上角(自身有定位属性的话就是相对于自身),都没有的话,就是相对于body左上角 元素及它都没有定位属性,以...body左上角为原点: 元素都有定位属性,以左上角为原点: 元素自身有定位属性,以自身左上角为原点: pageX, pageY pageX, pageY

2.5K20

前端中那些让你头疼英文单词

(alt里面放置是网络不好替换文本,src填写是路径,title填写是提示文本) a 超链接(herf内容是跳转地址,当然此处有一个工作中常用功能,那便是跳转网站新建一个标签,不用占本网站位置...submit提交,button普通按钮,reset重置(工作中一般不用)) select 选择菜单(下拉菜单功能嵌套option使用) table 表格 (tr行 td单元格 th表头) 普通语义...同级 parent children addClass 添加类 removeClass删除类 hover 鼠标滑过 eq 找下标 animate 自定义动画函数 slideUp 隐藏...---- re 正则 RegExp 正则 delegate 事件委托 给加: append 新增节点 appendTo新增节点 perpend给前面新增节点 perpendTo给前面新增节点 给加...: after给后面增加节点 insertAfter给指定后面新增节点 before 给前面新增节点 insertBefore 给指定前面新增节点 empty 清空节点 remove 删除节点

2.3K20

UGUI系列-实现层级菜单(Unity3D)

Vector3 childOffset;//单个菜单高度 private int[] cntArr;//所有菜单拥有的菜单个数 void Awake() {...组件自动排序功能和ButtonOnClick组件控制物体显示与隐藏来实现层级菜单功能。...可以了 第四种实现效果 实现原理:这个是用代码动态生成,其中一个脚本主要用来创建物体和物体,以及关系,另一个脚本是设置位置,箭头变化,按钮功能初始化 优缺点: 优点是代码清晰,结构明了,可以实现层级多级显示...,物体也是同样结构 就是把image往后拉了一下 三菜单也一样: 再加一个一菜单: 是不是so easy....哈哈哈 真的好low 脚本功能就很简单 一菜单控制它往下所有节点隐藏于显示...二菜单控制它往下所有节点隐藏于显示 以此类推。。。。

1.4K30

常用页面布局分享

2)浮动:浮动框可以左右移动,直至它外边缘遇到包含框或者另一个浮动框边缘。...浮动框不属于文档中普通流,一个元素浮动之后,不会影响到 块布局而只会影响内联框(通常是文本)排列,文档中普通流就会表现得和浮动框不存在一样,浮动框高度超出包含框时候,会导致本属于普通流中元素浮动之后...2.2) 元素设置 overflow:hidden  原理来自于块级格式化上下文,此方法会使溢出内容隐藏 2.3)元素设置overflow:auto 原理来自于块级格式化上下文,此方法在多个嵌套后...注:被设置inline-block元素与元素之间会产生微小间隙 例:因为有间隙,导致元素宽度放不下两个宽度为50%元素,被挤到下方 ? 。 将元素宽度调整为49%。 ?...因为一套公共样式会运用到多个页面,多个组件中,若某个三栏布局class被命名为 .foot-3 当此布局样式运用到头部菜单,就会很奇怪。同时会增加后期维护人员难度,误导理解。

2.6K80

纵向、横向导航菜单及二弹出菜单

/ a:hover{color:#F00;} 下面是将同一菜单菜单移动位置变为菜单一部分,这里需要用到position属性。...我们要实现效果是菜单不占据空间,所以可以使用position:absolute;让元素脱离文档流,使用left和top属性确定子菜单相对于菜单位置。...display:none;不显示元素 display:block;可以将行内标签变为块标签,占据一行 display:inline;可以将块标签变为行内标签,占据一行内一部分位置 我们需要实现,当鼠标悬浮到菜单显示菜单...,当鼠标离开菜单隐藏菜单,因此可以使用displaynone属性隐藏菜单,当鼠标移动到菜单使用display:block显示菜单。.../*鼠标移动到菜单显示菜单*/ #menu ul li:hover ul{display:block;} 最后页面代码如下: <%@ page language="java" import=

5.3K30

掌握这4 个关键 CSS 属性,你才算入门 CSS

它需要许多不同值,但坦率地说,在大多数情况下你将只使用 4 个值。 block:CSS 中元素,它占用尽可能多空间,但它们不能放置在同一水平线上。...inline-block:你可以将其视为块元素和内联元素组合值,你可以在其中设置它们宽度和高度,并且元素可以毫无问题地出现在同一水平线上。 none:使用此值可以从网页中隐藏元素。...您可以在下拉菜单中使用它,当你将鼠标悬停在导航菜单上时会显示附加信息。 2、Float float 属性用于定位和格式化内容。 简单来说,float 属性管理HTML内容容器一侧边缘位置。...例如; 元素被定位为absolute,我们可以通过top、left、bottom值来控制它在整个body元素中位置。你可以将其称为独立元素,其中 body 元素是元素。...但是,当我们为元素(蓝色容器)提供相对位置,所有具有绝对位置元素都将落入新元素之下。 你可以观察到,当我们将相对位置值传递给元素元素高度现在是相对于元素。 本文完~

1.9K30

自写JQ控件-树状菜单控件

*/ .st_tree ul li a{ font-size: 18px; } /* 菜单项 */ .st_tree ul ul li a{ font-size: 17px; } /* 菜单项..._init=function(){ this.tree.find("ul ul").hide(); /* 隐藏所有菜单 */...this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 菜单 */ }/* option....样式可能会比较好理解一些,就是一些初始背景颜色、鼠标放过去样式、被选中样式、缩进、菜单字体等等。所以不多介绍了。 主要js可能需要解释一下。...(1)比如一些位置知识: jquery获取元素位置方法有两个: position方法: 获取匹配元素集中第一个元素坐标,获取是该元素相当于最近一个拥有绝对或者相对定位元素偏移位置。

1.9K30

C#学习笔记—— 常用控件说明及其属性、事件

有模式地显示窗体,只能对模式窗体上对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示窗体通常用做应用程序中对话框。...数组中每个元素表示以此窗体作为多文档界面(MDI)窗体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)窗体。...这时将遇到一个问题,即控件与控件位置关系问题,即控件位置、大小变化时,控件按照什么样原则改变其位置、大小。Anchor属性就规定了这个原则。...一个窗口在功能上可能与窗口其他窗口不同,例如,一个窗口可能用于编辑图像,另一个窗口可能用于编辑文本,第 3 个子窗口可以使用图形来显示数据,但是所有的窗口都属于相同MDI窗口。...常用 MDI 窗体事MdiChildActivate,激活或关闭一个 MDI窗体将发生该事件。 3.菜单合并 窗体和窗体可以使用不同菜单,这些菜单会在选择窗体时候合并。

9.5K20

jQuery二菜单显示隐藏

在jQuery中创建二菜单显示和隐藏可以通过使用事件处理函数和CSS样式来实现。HTML 结构 首先,需要创建适当HTML结构来表示二菜单。一种常见方法是使用嵌套和元素。...每个菜单项都包含一个链接,以及一个嵌套无序列表来表示二菜单。CSS 样式 接下来,需要使用CSS样式来控制二菜单显示和隐藏。可以通过设置样式display属性来实现。...然后,通过为菜单项设置:hover伪类选择器,当鼠标悬停在菜单项上,显示相应菜单。...JavaScript 交互 要使用jQuery实现二菜单显示和隐藏,可以使用jQuery事件处理函数。...当鼠标进入菜单,使用slideDown()方法显示相应菜单。当鼠标离开菜单,使用slideUp()方法隐藏菜单

3.3K30

overflow:hidden作用能治住塌陷_html溢出隐藏代码

一. overflow:hidden 溢出隐藏 给一个元素中设置overflow:hidden,那么该元素内容若超出了给定宽度和高度属性,那么超出部分将会被隐藏,不占位。... 效果如下: 一般情况下,在页面中,一般溢出后会显示省略号,比如,一行文本超出固定宽度就隐藏超出内容显示省略号。...overflow:hidden 清除浮动 一般而言,元素不设置高度,高度由随内容增加自适应高度。...元素内部元素全部都设置浮动float之后,元素会脱离标准流,不占位,元素检测不到元素高度,元素高度为0。...因此,需要给加个overflow:hidden属性,这样高度就随容器及内容高度而自适应。

1.8K30

Spring Boot+Vue3 动态菜单实现思路梳理

光说思路大家还是云里雾里,我们结合具体效果图来看: 最终菜单显示效果类似上图,我把这里菜单分为了四类: 有:像系统管理那种,既有菜单,又有菜单。...整体上,可以点击菜单 path 都是菜单 path + 菜单 path,如果菜单项有,那就正常拼接就行了;如果只有一个菜单,那么菜单 path 就是 /;如果是一个外链,那就只有菜单...先看整体上,这个菜单要是非隐藏隐藏菜单,那么直接一菜单及其下菜单就都不渲染了。...渲染整体上分两块,上面的 template 主要是渲染只有一个菜单情况,也就是第一小节 2、3、4 三种情况,下面的渲染正常情况,也就是第一小节菜单 1。...hasOneShowingChild 主要是判断这个菜单项是否只有一个需要渲染菜单,如果有多个子菜单,但是大部分都是隐藏,只有一个需要渲染出来,那也算只有一个菜单,如果一个菜单项都没有菜单,那也算一个菜单

93720
领券