当前位置: 首页 > 知识库问答 >
问题:

只有在单击父菜单后才打开子菜单

裘嘉树
2023-03-14

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

我有一个垂直菜单和子菜单,我想显示子菜单,只有当父菜单被点击(不是悬停),一次只显示一个子菜单,在点击菜单的某个地方后,我想要子菜单消失。

这就是我现在得到的--它基于现在的悬停。我试着把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;
            }

有谁知道吗?

共有2个答案

舒飞捷
2023-03-14

据我所知,仅用CSS是无法实现这一点的,需要使用JavaScript/jQuery。

松洛华
2023-03-14

好的,我用这个来解决我的问题:我如何检测元素外部的单击?

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


     $('html').click(function() {
            hideSubMenu();
     });
     $("#cssmenu").click(function(event){
            event.stopPropagation();
     });

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

    <div id='cssmenu'>
    <ul>
      <li class='has-sub '><a href='#' onclick="subMenu('handleSubMenu1')">
    ...
 类似资料:
  • 我想知道当菜单按钮的菜单当前打开时,是否可以为菜单按钮设置特定样式(例如,背景色为黑色)。也就是说,如果菜单未打开,则其背景色不应为黑色。我可以在CSS文件中这样做吗?或者甚至可以这样做吗? 我知道菜单按钮有一个显示的方法,它指示我,菜单是否打开,但我不知道应用这个,以便在菜单打开时按钮颜色会发生变化。 这是菜单按钮:https://docs.oracle.com/javase/8/javafx/

  • 我的electron应用程序中有一个按钮,上面写着“打开文件”,当你点击它时,打开文件对话框就会出现,我可以选择一个文件。 但是,当我从应用程序工具栏中单击菜单项时,如何打开“打开文件对话框”? 这是工具栏菜单子菜单中的我的标签: 我想做这样的事情: 但没有“开放”这样的角色。 如何实现打开打开文件对话框的单击事件? Main.js打开文件部分: index.js:

  • 我无法单击子菜单。。尝试使用不同的xpath/id。。。。。 下面是html标签,主菜单是演示文稿(用红色箭头标记),子菜单在div下。 您能告诉我如何为此编写xpath吗。我想单击子菜单中的“假设”。 这里主菜单标签位于div(子菜单)的底部。 另附硒代码。请帮帮我。。。。

  • 所以我想做的是让我的主菜单浮动,但同时是可调整大小的(窗口宽度),我也有一个隐藏的子菜单,我希望它遵循主菜单的规则。 此外,主菜单并不是从页面的顶部开始,但当你向下滚动时,我希望它能贴在顶部边缘并在那里Rest。 jsFiddle在这里 CSS JAVASCRIPT(jQuery的什么版本?) HTML(固定HTML格式,删除额外标记,添加缺失标记)

  • 我不能点击子菜单项使用selenium网络驱动程序使用c#。我正在使用IE9和FireFox 13。我尝试过Action Builder,但它不起作用。它给出了一个错误,说元素不能被单击。 我甚至使用了javascript:js。ExecuteScript(“return$(\”a:contains('ID1')\”).mouseover();”;//鼠标移动到主菜单 webDriver。Find

  • 我使用BottomNavigationViewEx库在我的android应用程序中显示底部菜单栏,该库运行良好并修复了标准BottomNavigationView的许多缺点。 问题是,根据要求,我需要在菜单中显示7个选项,其中4个选项是对各自功能的直接访问,还有一个“更多”选项,该选项应该显示一个包含3个以上选项的子菜单(类似于一个工具栏,其中包含属性为showAsAction=“never”的项