ml-auto 没有将导航栏链接推到右边

IT技术 css reactjs flexbox bootstrap-4 reactstrap
2021-03-29 01:03:05

我正在使用reactstrap并一直在关注此链接:

https://reactstrap.github.io/components/navbar/

在示例中,将 向右<nav className='ml-auto' navbar><NavItem>但是,我正在尝试实现的(与示例非常相似)<NavItem>正在<NavbarBrand>.

我已经检查了 100 次这样的语法,它看起来是正确的。我拥有的自定义 CSS 很少,似乎没有覆盖任何东西。控制台中的 CSS 看起来非常相似,并且似乎受到以下因素的影响:

.ml-auto, .mx-auto {
    margin-left: auto!important;
}

至少在示例中的控制台中将其关闭,将<NavItem>右侧移动<NavbarBrand>它在我的应用程序中的旁边(我不想要)。这是我在看的内容:

Reactstrap 示例(正确的间距):

正确的间距 在此处输入图片说明

我的应用程序的控制台(不正确的间距): 在此处输入图片说明 在此处输入图片说明

如何在我的应用程序中获得正确的间距?

我真的不清楚是什么影响margin-left: auto !important了在一个工作而不是另一个工作。

6个回答

对于 Bootstrap-5,我们必须使用 ms-auto 而不是 ml-auto

是的,这成功了。谢谢,你救了我的一天。
2021-06-01 01:03:05
这对我有用。我正在使用 react-bootstrap 并安装了 bootstrap 使用yarn add bootstrap它安装了最新的 v5.0。重新安装了引导程序 ( yarn add bootstrap@4.6.0) 并且现在工作正常。
2021-06-04 01:03:05
同意以上意见。
2021-06-09 01:03:05
如果使用引导程序 5,应该是公认的答案
2021-06-11 01:03:05
这值得更多的信任。在 react 的引导页面下,没有任何提及 ms-auto。ml-auto 是它给我的全部内容以及这里的所有其他帖子。该死的家伙,你是一个传奇。
2021-06-19 01:03:05

从 Bootstrap 5 2021 开始,间距实用程序的边名有一些变化。

  • Margin Left 现在称为 Margin Start,因此使用ms代替ml

  • 示例:将 margin-left 设置为 auto :使用 ms-auto

  • 同样将 margin left 设置为 3 :使用ms-3代替ml-3

您可以在官方引导程序文档BootStrap Spacing Utilities 中了解有关边距和填充的新侧面名称的更多信息

导航栏组件(和许多其他组件)只有在您按照设计使用的方式使用它们时才能工作。

例如,ml-auto适用于同级元素

如果你破坏了这种兄弟关系,它就不起作用。

换句话说,您不能只是在不必要的 div 中随机包装元素。

删除您放置在导航栏切换器和折叠组件周围的 div,以使同级选择器按预期工作。

另外:不要!important在任何自定义 css 中使用该标志作为永久解决方案。该标志仅用于快速测试。

PS 您似乎习惯将东西包装在不必要的 div 中。container也被包裹在这样的无用的div。不要为某种“美学”添加不必要的代码。仅在实际执行某些操作时才添加代码,并为其他所有内容使用注释。

!important 由 Bootstrap 添加。他们没有制定那些 CSS 规则。
2021-06-18 01:03:05

关于如何ml-auto工作的解释

看来这已经在评论中解决了。我只是想添加一个ml-auto不起作用的解释,因为它的 flexbox父需要是导航栏的全宽因此,它也可以通过添加w-100额外的 div 来解决

<nav class="navbar navbar-expand-md navbar-light bg-faded">
     <a class="navbar-brand" href="#">reactstrap</a>
     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="navbar-toggler-icon"></span>
     </button>
     <div class="w-100">
        <div class="navbar-collapse collapse">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item">
                    <a class="nav-link" href="#">Link</a>
                </li>
                ...
            </ul>
        </div>
     </div>
 </nav>

ml-auto之所以有效,是因为 flexbox 父级默认情况下“缩小”子块元素的方式。它与兄弟元素无关,并且在 flexbox 父元素中只有一个孩子可以正常工作:https ://www.codeply.com/go/xPaoNJMzbG

这是一篇关于自动边距如何与 flexbox 配合使用好文章

我尝试将 w-100 添加到父元素(在我的例子中是行),但没有任何区别。当我使用 ml-auto 时,按钮仍然没有正确对齐。但是,添加类 text-right 有效并且按钮正确对齐。
2021-05-26 01:03:05

在 Bootstrap-5 中,有一些变化,之前的 margin-left:auto 是 ml-auto,现在改为 ms-auto,类似的,mr-auto 改为 me-auto。但是对于顶部和底部,它与引导程序的早期版本相同,即引导程序-5 之前的版本

有关更多详细信息,请访问文档

是的,如果您使用的是 Bootstrap 版本 5,这个答案是正确的
2021-06-20 01:03:05