我想我的问题以前已经回答过很多次了,但是我找不到确切的我的案例。
我有一个垂直菜单和子菜单,我想显示子菜单,只有当父菜单被点击(不是悬停),一次只显示一个子菜单,在点击菜单的某个地方后,我想要子菜单消失。
这就是我现在得到的--它基于现在的悬停。我试着把a:hover改成类似a:active的东西,但它并不能很好地工作(我在CSS方面不是很好)。
/* The container */ #cssmenu > ul { display: block; position: relative; //width: 190px; width:100%; } /* The list elements which contain the links */ #cssmenu > ul li { display: block; position: relative; margin: 0; padding: 0; width: 100%; } /* General link styling */ #cssmenu > ul li a { display: block; position: relative; margin: 2; width:95%; height:50px; background-color:#ABC578; border-left:solid 0px #FFFFFF; border-bottom:solid 1px #FFFFFF; font: 0.7em Tahoma, sans-serif; font-size: 14px; font-weight:bold; color: #FFFFFF; text-decoration:none; padding-top:30px; } /* The hover state of the menu/submenu links */ #cssmenu > ul li>a:hover, #cssmenu > ul li:hover>a { color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, .3); background: #82c500; background: -webkit-linear-gradient(bottom, #82c500, #000000); background: -ms-linear-gradient(bottom, #82c500, #000000); background: -moz-linear-gradient(bottom, #82c500, #000000); background: -o-linear-gradient(bottom, #82c500, #000000); border-color: transparent; } /* The arrow indicating a submenu */ #cssmenu > ul .has-sub>a::after { content: ''; position: absolute; top: 34px; right: 8px; width: 0px; height: 0px; /* Creating the arrow using borders */ border: 4px solid transparent; border-left: 4px solid #d8d8d8; } /* The same arrow, but with a darker color, to create the shadow effect */ #cssmenu > ul .has-sub>a::before { content: ''; position: absolute; top: 35px; right: 8px; width: 0px; height: 0px; /* Creating the arrow using borders */ border: 4px solid transparent; border-left: 4px solid #000; } /* Changing the color of the arrow on hover */ #cssmenu > ul li>a:hover::after, #cssmenu > ul li:hover>a::after { border-left: 4px solid #fff; } #cssmenu > ul li>a:hover::before, #cssmenu > ul li:hover>a::before { border-left: 4px solid rgba(0, 0, 0, .3); } /* THE SUBMENUS */ #cssmenu > ul ul { position: absolute; left:95%; width:100%; top: -9999px; padding-left: 5px; opacity: 0; /* The fade effect, created using an opacity transition */ -webkit-transition: opacity .2s ease-in; -moz-transition: opacity .2s ease-in; -o-transition: opacity .2s ease-in; -ms-transition: opacity .2s ease-in; } /* Showing the submenu when the user is hovering the parent link */ #cssmenu > ul li:hover>ul { top: -2px; opacity: 1; }
有谁知道吗?
好的,我用这个来解决我的问题:我如何检测元素外部的单击?
现在我在网站的页脚有这样的东西:
$('html').click(function() { hideSubMenu(); }); $("#cssmenu").click(function(event){ event.stopPropagation(); });
当我点击子菜单时,我调用子菜单函数来显示子菜单:
<div id='cssmenu'>
<ul>
<li class='has-sub '><a href='#' onclick="subMenu('handleSubMenu1')">
...
据我所知,仅用CSS是无法实现这一点的,需要使用JavaScript/jQuery。