简体   繁体   English

在悬停CSS上显示下拉菜单

[英]Show dropdown menu on hover css

Can't style menu for sub menu items to dropdown on hover. 无法将菜单样式设置为子菜单项在悬停时下拉。 Now if I add sub items they then align in one line in the final menu like other items and run into items on the right side and the parent item goes above them and everything become messy. 现在,如果我添加了子项,则它们将像其他项一样在最终菜单中排成一行,并碰到右侧的项,而父项位于其上方,并且一切都变得混乱。 The screenshot: https://gyazo.com/834837690579fee013cdb6570ab7f317 After I added this CSS below - the sub menu items don't show up at all. 屏幕截图: https : //gyazo.com/834837690579fee013cdb6570ab7f317在下面添加此CSS之后-子菜单项根本不会显示。 The parent item in question: Ещё 父项有问题:Ещё

My frightening code: 我可怕的代码:

 .menu-top ul li { display: none; position: absolute; background-color: #f9f9f9; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); padding: 12px 16px; z-index: 1; } .menu-top .menu-item-has-children:not(.off-canvas):hover>.sub-menu { display: block; float: none; margin-top: 0; opacity: 1; position: absolute; left: 0; right: auto; top: auto; bottom: auto; height: auto; min-width: -moz-max-content; min-width: -webkit-max-content; min-width: max-content; transform: none; } 
 <div class="header-menu"> <ul id="menu-verhnee-menyu-1" class="menu-top"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-274"><a href="http://localhost/samsklad/o-samsklade/">О СамСкладе</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-272"><a href="http://localhost/samsklad/boksy-i-tseny/">Боксы и цены</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-270"><a href="http://localhost/samsklad/fotogallereya/">Фото</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-273"><a href="http://localhost/samsklad/faq/">FAQ</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-271"><a href="http://localhost/samsklad/kontakty/">Контакты</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-539"><a href="http://localhost/samsklad/kalkulyator/">Калькулятор</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-572"><a href="http://localhost/samsklad/oplata/">Оплата</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574"><a href="#">Ещё</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-575"><a href="http://localhost/samsklad/resheniya-dlya-biznesa/">Решения для бизнеса</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-576"><a href="http://localhost/samsklad/resheniya-dlya-doma/">Решения для дома</a></li> </ul> </li> </ul> </div> 

you can try to make component for the child menu and use @HostListener('mouseenter',['$event']) and @HostListener('mouseleave', ['$event']) . 您可以尝试为子菜单制作组件,并使用@HostListener('mouseenter',['$event'])@HostListener('mouseleave', ['$event']) You can display childs with *ngIf or ngStyle : 您可以使用*ngIfngStyle显示*ngIf ngStyle

 @HostListener('mouseenter', ['$event']) @HostListener('mouseleave', ['$event']) onHover(event: MouseEvent) { this.visible = event.type === 'mouseenter' ? 'in' : 'out'; } 
 <ul class="sub-menu" *ngIf="visible"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-575"><a href="http://localhost/samsklad/resheniya-dlya-biznesa/">Решения для бизнеса</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-576"><a href="http://localhost/samsklad/resheniya-dlya-doma/">Решения для дома</a></li> </ul> 

Note that you're previously targetting: .menu-top ul li to display:none; 请注意,您之前的目标是: .menu-top ul li display:none;

Which in fact you're targetting the wrong selector: .menu-top .menu-item-has-children:not(.off-canvas):hover>.sub-menu 实际上,您针对的是错误的选择器: .menu-top .menu-item-has-children:not(.off-canvas):hover>.sub-menu

If you change into: .menu-top .menu-item-has-children:not(.off-canvas):hover .sub-menu li it would show up on hover . 如果更改为: .menu-top .menu-item-has-children:not(.off-canvas):hover .sub-menu li它将显示在hover


Explanation: 说明:

Your HTML structure was: div.header-menuul.menu-top → bunch of li.menu-item... 您的HTML结构是: div.header-menuul.menu-top →一堆li.menu-item...

where one of them was li.menu-item-has-children which has the following child: ul.sub-menuli.menu-item. 其中一个是li.menu-item-has-children ,其中有以下孩子: ul.sub-menuli.menu-item.

More about selector: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors 有关选择器的更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Selectors

 .menu-top ul li { display: none; /*position: absolute;*/ /*you can comment out if necessary*/ background-color: #f9f9f9; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); padding: 12px 16px; z-index: 1; } .menu-top .menu-item-has-children:not(.off-canvas):hover .sub-menu li { display: block; /*float: none; margin-top: 0; opacity: 1; /*position: absolute; left: 0; right: auto; top: auto; bottom: auto; height: auto; min-width: -moz-max-content; min-width: -webkit-max-content; min-width: max-content; transform: none;*/ /*you can comment out if necessary*/ } 
 <div class="header-menu"> <ul id="menu-verhnee-menyu-1" class="menu-top"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-274"><a href="http://localhost/samsklad/o-samsklade/">О СамСкладе</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-272"><a href="http://localhost/samsklad/boksy-i-tseny/">Боксы и цены</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-270"><a href="http://localhost/samsklad/fotogallereya/">Фото</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-273"><a href="http://localhost/samsklad/faq/">FAQ</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-271"><a href="http://localhost/samsklad/kontakty/">Контакты</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-539"><a href="http://localhost/samsklad/kalkulyator/">Калькулятор</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-572"><a href="http://localhost/samsklad/oplata/">Оплата</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574"><a href="#">Ещё</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-575"><a href="http://localhost/samsklad/resheniya-dlya-biznesa/">Решения для бизнеса</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-576"><a href="http://localhost/samsklad/resheniya-dlya-doma/">Решения для дома</a></li> </ul> </li> </ul> </div> 

Navbar 导航栏

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Dropdown
      </a>
                <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                    <a class="dropdown-item" href="#">Action</a>
                    <a class="dropdown-item" href="#">Another action</a>
                    <div class="dropdown-divider"></div>
                    <a class="dropdown-item" href="#">Something else here</a>
                </div>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>

    </div>
</nav>

<style>
    .dropdown:hover>.dropdown-menu {
        display: block;
    }
</style>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM