Bootstrap 类 dropdown-menu dropdown-menu-right 不适用于自定义子菜单

Posted

技术标签:

【中文标题】Bootstrap 类 dropdown-menu dropdown-menu-right 不适用于自定义子菜单【英文标题】:Bootstrap class dropdown-menu dropdown-menu-right is not working on self-defined sub-menu's 【发布时间】:2015-09-23 02:22:54 【问题描述】:

与我之前的问题有关 (Dropdown submenu on bootstrap is not working) 我目前正在为 li 下拉菜单的子菜单构建子菜单。所以这意味着它是嵌套的。在银行菜单下有交易下拉菜单,在交易下拉菜单下有不同类型交易的菜单。 顺便说一句,我已经成功创建了它,但是“事务”模块的子菜单在悬停期间出现在事务菜单的前面,阻止了作为事务的父菜单。在悬停期间如何避免它并将其放置在交易菜单的右侧?无论如何,我已经使用“dropdown-menu dropdown-menu-right”,但它不会改变程序的输出。我认为我的 CSS 有问题。

html 代码:

    <li class='dropdown'><a id = 'dLabel' class='dropdown-toggle active' data-toggle='dropdown' href='#'><img src = 'images/forbank.png' height = 35 width = 35>Banking<span class='caret'></span></a>
        <ul class='dropdown-menu' role='menu' aria-labelledby='dropdownMenu'>
            <li class = 'dropdown-submenu'>
            <a  tabindex = '-1' href='#'><span class = 'glyphicon glyphicon-cog'> </span>  Transaction </a>
                <ul class='dropdown-menu dropdown-menu-right' aria-labelledby='dLabel'>
                    <li><a tabindex='-1' href='#'> Withdrawal / Deposit </a></li>
                    <li><a tabindex='-1' href='#'> Fixed Deposit </a></li>
                </ul>
            </li>
            <li role='separator' class='divider'></li>
            <li><a href='#'><span class='glyphicon glyphicon-list-alt'> </span> Summaries </a></li>
            <li><a href='#'><span class='glyphicon glyphicon-wrench'> </span>  Settings </a></li>
        </ul>
    </li>

CSS 代码:

.dropdown-submenu 
    position: relative;


.dropdown-submenu>.dropdown-menu 
    top: 0;
    left: 100%;
    margin-top: -6px;
    margin-left: -1px;
    -webkit-border-radius: 0 6px 6px 6px;
    -moz-border-radius: 0 6px 6px;
    border-radius: 0 6px 6px 6px;


.dropdown-submenu:hover>.dropdown-menu 
    display: block;


.dropdown-submenu>a:after 
    display: block;
    content: " ";
    float: right;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
    border-width: 5px 0 5px 5px;
    border-left-color: #ccc;
    margin-top: 5px;
    margin-right: -10px;


.dropdown-submenu:hover>a:after 
    border-left-color: #fff;


.dropdown-submenu.pull-left 
    float: none;


.dropdown-submenu.pull-left>.dropdown-menu 
    left: -100%;
    margin-left: 10px;
    -webkit-border-radius: 6px 0 6px 6px;
    -moz-border-radius: 6px 0 6px 6px;
    border-radius: 6px 0 6px 6px;

【问题讨论】:

【参考方案1】:

我尝试对上述 Siddharth Garg 的回答稍作改动。

<div class="dropdown-menu dropdown-menu-right">

.dropdown-menu-right 
    padding-left: 10px;

这可行,并允许我设置填充。

【讨论】:

【参考方案2】:

对于将来偶然发现这一点的任何人。请参阅https://github.com/twbs/bootstrap/issues/23553。

似乎 bootstrap4 的下拉菜单右键在导航栏之外不起作用。 Jipexu 的 hack 对我有用:

.dropdown-menu-right 
    right: 0;
    left: auto;

【讨论】:

为什么没有被接受?效果非常好。【参考方案3】:

试试这个css

/* dropdown open on right side of the menu*/
.dropdown-menu 
  top: 0;
  left: 100%;

【讨论】:

以上是关于Bootstrap 类 dropdown-menu dropdown-menu-right 不适用于自定义子菜单的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap下拉菜单

Bootstrap源码分析之dropdown

bootstrap怎么让下拉菜单从右侧弹出呢,或是

嵌套多个下拉菜单 - Bootstrap

如何使用 React 制作 Bootstrap 下拉菜单

bootstrap学习笔记之三(组件的使用)