将最后一个子 li 项目向右对齐 [重复]

Posted

技术标签:

【中文标题】将最后一个子 li 项目向右对齐 [重复]【英文标题】:Align the last-child li item to the right [duplicate] 【发布时间】:2020-02-26 12:22:23 【问题描述】:

我正在尝试使用float:right 将最后一个子项浮动到右侧,但它没有发生。有人可以帮忙吗?

CSS 似乎正在按应有的方式加载,但由于在 bootstrap 4 中使用了 flex,它产生了问题并且没有得到预期的结果。

JSFiddle 演示:https://jsfiddle.net/jbthz8L3/

<div id="main-nav" class="justify-content-end">
  <ul id="menu-main-menu" class="navbar-nav">
    <li class="menu-item current-menu-item current_page_item menu-item-home active nav-item"><a href="#" class="nav-link">Main Menu 1</a>
    </li>
    <li class="menu-item menu-item-has-children dropdown nav-item"><a href="#" data-toggle="dropdown" class="dropdown-toggle nav-link">Main Menu 2</a>
      <ul class="dropdown-menu" role="menu">
        <li class="menu-item menu-item-has-children dropdown nav-item"><a href="#" class="dropdown-item">Menu 1</a>
          <ul class="dropdown-menu" role="menu">
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 1</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 2</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 3</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 4</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 5</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 6</a></li>
          </ul>
        </li>
        <li class="menu-item menu-item-has-children dropdown nav-item"><a href="#" class="dropdown-item">Menu 2</a>
          <ul class="dropdown-menu" role="menu">
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 11</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 12</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 13</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 14</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 15</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 16</a></li>
            <li class="menu-item nav-item"><a href="#" class="dropdown-item">Sub Menu 17</a></li>
          </ul>
        </li>
        <li class="menu-item nav-item"><a href="#" class="dropdown-item">Menu 3</a>
        </li>
      </ul>
    </li>
    <li class="menu-item nav-item"><a href="#" class="nav-link">Main Menu 3</a></li>
    <li class="menu-item nav-item"><a href="#" class="nav-link">Main Menu 4</a></li>
  </ul>
</div>

CSS:

.navbar-nav 
    -ms-flex-direction: row;
    flex-direction: row;

.navbar-nav .dropdown-menu 
    position: absolute;

.navbar-nav > li:last-child 
   float: right;

.navbar-nav > li 
  margin: 0 15px;

.dropdown-menu .dropdown-toggle::after 
  border-bottom: 0.3em solid transparent;
  border-left: 0.3em solid;
  border-top: 0.3em solid transparent;

.dropdown-menu.show 
  border: 1px solid #999;
  background-color: #ffffff;

.dropdown.menu-item-has-children .dropdown.menu-item-has-children 
    position: unset;

.dropdown.menu-item-has-children .dropdown.menu-item-has-children>.dropdown-menu 
    top: 0;
    left: 100%;
    margin-top: -6px;
    margin-left: -1px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.11);
    background-color: #ffffff;
    border: 1px solid #999;

.dropdown.menu-item-has-children .dropdown.menu-item-has-children:hover>.dropdown-menu 
    display: block;


.dropdown.menu-item-has-children .dropdown.menu-item-has-children>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.menu-item-has-children .dropdown.menu-item-has-children:hover>a:after 
    border-left-color: #fff;


.dropdown.menu-item-has-children .dropdown.menu-item-has-children.pull-left 
    float: none;


.dropdown.menu-item-has-children .dropdown.menu-item-has-children.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;

【问题讨论】:

这个问题怎么重复了?这是非常不同的。 这确实是该问题的重复,因为您可以尝试将 ml-auto 添加到包含 Main Menu 4 的类中,这意味着 margin-left: auto;。跨度> margin-left: auto; 不起作用。试试看,自己看看。 在您的代码中尝试和测试。 【参考方案1】:

float:right; 更改为margin-left:auto;

【讨论】:

【参考方案2】:

float: right; 更改为

right: 0;
position: absolute;

【讨论】:

太棒了!得到这个工作。太感谢了!我会在 3 分钟内接受答案。【参考方案3】:

将 float:right 改为 margin-left: auto;

【讨论】:

谢谢。我让它与 Max 的解决方案一起工作。不知何故,这不起作用。 @Icewine Dhaval Jardosh 在你面前有同样的答案,所以我会删除你的答案。 边距自动按预期工作:jsfiddle.net/6rc1fxbL【参考方案4】:

其中一个选项:

right: 0;
position: absolute;

也许有一些预定义的特定于引导程序的类可以以不同的方式解决它。

【讨论】:

以上是关于将最后一个子 li 项目向右对齐 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

CSS Flexbox:将最后第n个项目对齐到末尾[重复]

FlexBox 对齐(拉伸)最后一个项目

如何使用 flexbox 将项目右对齐?

将flex内的div向右对齐[重复]

在flex中将div的内容向右对齐[重复]

将一个项目居中对齐,其他项目与 Flexbox 对齐 [重复]