我想在左侧设置徽标,在右侧设置链接,但浮动在导航标签上不起作用......为啥?

Posted

技术标签:

【中文标题】我想在左侧设置徽标,在右侧设置链接,但浮动在导航标签上不起作用......为啥?【英文标题】:I want to set the logo on left and links on right but float dont work on nav tag ... why?我想在左侧设置徽标,在右侧设置链接,但浮动在导航标签上不起作用......为什么? 【发布时间】:2020-07-16 13:28:16 【问题描述】:

我使用此代码进行导航,并使用引导程序进行练习

<!DOCTYPE html>
  <html lang="fa">
    <head>
        <meta charset="UTF-8">
        <title>welcome to your site</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
        <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" ></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" ></script>
    </head>
    <body>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="#"><img src="img/mehrlogo.png"  ></a>
      <button class="navbar-toggler " type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav">
          <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="#">Features</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Pricing</a>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
        </ul>
      </div>
    </nav>
    </body>
    </html>

如何在右侧或左侧设置徽标,在另一侧设置链接?

默认情况下,链接和徽标彼此靠近,向左或向右浮动不起作用 - 我该怎么办?

【问题讨论】:

【参考方案1】:

.navbar 使用display: flex 定位其元素。这意味着您可以通过在.navbar 上更改flex-directionjustify-content 来重新定位或排列它们,但还要注意flex-growflex-shrinkflex-basis 以及在@987654330 的每个直接子级上设置的左右边距@。

从左到右开始flex-direction: row(默认)。 从右到左:flex-direction: row-reverse

在重新排列它们之间和周围的空间方面,对于上述任何一种,将justify-content 更改为space-between(默认)、space-evenlyflex-endflex-startcenter 中的任何一个.

这是一个以相反顺序和均匀间隔排列的示例:

nav.navbar 
  flex-direction: row-reverse;
  justify-content: space-evenly;

div.navbar-collapse 
  flex-grow: 0;
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">LOGO HERE</a>
  <button class="navbar-toggler " type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <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="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>

注意事项:在父级或任何子级上设置的更多属性会影响其显示行为。一些最常见的:

在任何孩子身上设置margin: auto 会偷走所有积极的空间并将其留给那个特定的间隙,使justify-content 看起来好像不起作用。它正在工作,但它的分布正好是0 空间。如果您想将可用空间划分为几个选定的间隙,请使用任何相邻元素在每个间隙中放置一个margin:auto。 在任何子节点上设置flex-growflex-shrinkflex-basis 都会影响它们的大小,从而影响可用空间的分布。这里需要注意的是,默认情况下,在某些响应时间间隔内,.navbar-collapse 具有 flex-grow: 1,因此您需要将其设置为 0 才能重新分配可用空间。否则没有可用空间。

【讨论】:

当我使用反向时,该属性设置了我想要的徽标和链接的距离,但是当该属性默认为它们之间没有距离并且它们彼此靠近时,你知道我在说什么? 如您所见,它在这里工作。如果它在您的情况下不起作用,您正在使用您的问题中未包含的其他 CSS。如果不知道额外的 CSS 是什么,任何人都无法提供帮助。 当使用该属性时,整个事情都会移动,但现在我想将链接设置到浏览器的右侧,并且徽标在正确的位置,我没有写任何外部 css @hossein,如果我看不到它,我就无法接受。提出minimal reproducible example 实际重现问题。您提供的代码无法重现您所描述的内容。【参考方案2】:

最好使用这个: 如果您想将链接(或其他元素)放在右侧,请将 ml-auto 类添加到您的元素;如果你想把它放在左边,添加 mr-auto 类到你的元素。

【讨论】:

以上是关于我想在左侧设置徽标,在右侧设置链接,但浮动在导航标签上不起作用......为啥?的主要内容,如果未能解决你的问题,请参考以下文章

在标题/导航栏中居中徽标[重复]

尝试使用弹性框将链接带到导航栏的右侧[重复]

CSS标题导航UL / LI链接......我做错了啥?

Bootstrap 4 - 使用切换按钮将链接移动到导航栏的右侧[重复]

滚动时如何使菜单栏固定在顶部

Bootstrap 4导航栏,带有品牌中心和左侧,中心和右侧的链接[重复]