仅在单击父项后打开子菜单

Posted

技术标签:

【中文标题】仅在单击父项后打开子菜单【英文标题】:Open submenu only after click on parent 【发布时间】:2013-02-25 15:38:09 【问题描述】:

我想我的问题以前已经回答过很多次了,但我找不到我的确切情况。

我有一个带有子菜单的垂直菜单,我想仅在单击父级(而不是悬停)时显示子菜单,一次只显示一个子菜单,然后单击菜单外的某个位置后,我希望子菜单消失。

这就是我现在所拥有的——它基于现在的悬停。我尝试将 a:hover 更改为类似 a:active 的东西,但效果不佳(我的 CSS 不太好)。

/* 容器 */ #cssmenu > ul 显示:块; 位置:相对; //宽度:190px; 宽度:100%; /* 包含链接的列表元素 */ #cssmenu > ul li 显示:块; 位置:相对; 边距:0; 填充:0; 宽度:100%; /* 通用链接样式 */ #cssmenu > ul li a 显示:块; 位置:相对; 边距:2; 宽度:95%; 高度:50 像素; 背景颜色:#ABC578; 左边框:实心 0px #FFFFFF; 边框底部:实心 1px #FFFFFF; 字体:0.7em Tahoma,无衬线; 字体大小:14px; 字体粗细:粗体; 颜色:#FFFFFF; 文字装饰:无; 填充顶部:30px; /* 菜单/子菜单链接的悬停状态 */ #cssmenu > ul li>a:hover, #cssmenu > ul li:hover>a 颜色:#fff; 文本阴影:0 1px 0 rgba(0, 0, 0, .3); 背景:#82c500; 背景:-webkit-linear-gradient(底部,#82c500,#000000); 背景:-ms-linear-gradient(底部,#82c500,#000000); 背景:-moz-linear-gradient(底部,#82c500,#000000); 背景:-o-线性渐变(底部,#82c500,#000000); 边框颜色:透明; /* 指示子菜单的箭头 */ #cssmenu > ul .has-sub>a::after 内容: ''; 位置:绝对; 顶部:34px; 右:8px; 宽度:0px; 高度:0px; /* 使用边框创建箭头 */ 边框:4px纯透明; 左边框:4px 实心#d8d8d8; /* 相同的箭头,但颜色更深,以创建阴影效果 */ #cssmenu > ul .has-sub>a::before 内容: ''; 位置:绝对; 顶部:35px; 右:8px; 宽度:0px; 高度:0px; /* 使用边框创建箭头 */ 边框:4px纯透明; 左边框:4px 实心#000; /* 改变鼠标悬停时的颜色 */ #cssmenu > ul li>a:hover::after, #cssmenu > ul li:hover>a::after 左边框:4px 实心#fff; #cssmenu > ul li>a:hover::before, #cssmenu > ul li:hover>a::before 左边框:4px 实心 rgba(0, 0, 0, .3); /* 子菜单 */ #cssmenu > ul ul 位置:绝对; 左:95%; 宽度:100%; 顶部:-9999 像素; 左填充:5px; 不透明度:0; /* 使用不透明过渡创建的淡入淡出效果 */ -webkit-transition:不透明度 .2s 缓入; -moz-transition:不透明度 .2s 缓入; -o-transition:不透明度 .2s 缓入; -ms-transition:不透明度 .2s 缓入; /* 当用户悬停父链接时显示子菜单 */ #cssmenu > ul li:hover>ul 顶部:-2px; 不透明度:1;

请问有人有什么想法吗?

【问题讨论】:

也许有用:***.com/questions/1014861/…***.com/questions/13630229/… 【参考方案1】:

好的,我用这个来解决我的问题:How do I detect a click outside an element?

现在我在网站的页脚中有这样的东西:

$('html').click(function() 隐藏子菜单(); ); $("#cssmenu").click(函数(事件) event.stopPropagation(); );

当我点击子菜单时,我调用 subMenu 函数显示子菜单:

    <div id='cssmenu'>
    <ul>
      <li class='has-sub '><a href='#' onclick="subMenu('handleSubMenu1')">
    ...

【讨论】:

【参考方案2】:

据我所知,你不能单独使用 CSS 来做到这一点,你需要使用 javascript/jQuery。

【讨论】:

以上是关于仅在单击父项后打开子菜单的主要内容,如果未能解决你的问题,请参考以下文章

单击下拉菜单按钮时引导打开链接

单击上下文菜单项后验证当前 URL

如何在WPF中单击菜单项时在父窗口下打开子窗口?

子菜单拒绝点击打开

单击主菜单项的jQuery不会显示子子菜单

我想在 React 中做一个下拉菜单。单击一个按钮应打开一个子菜单。在子菜单之外单击应将其关闭