css - Bootstrap 4 导航栏 : how to right-align an icon and keep it out of the toggle?

标签 css twitter-bootstrap bootstrap-4

<分区>

我想使用 Twitter Bootstrap 来布局我的导航栏,以便它有“左”、“中”和“右”部分,其中中间部分在 navbar-toggler 下折叠(“汉堡菜单”)当空间不足时。

独立示例的 Codepen:https://codepen.io/fiver/pen/eKJOMG

我错误的部分(我认为)是“图标”元素的定义:

<nav className="navbar navbar-expand-sm navbar-dark bg-dark ">
  <a className="navbar-brand" href="#">ExampleApp</a>
  <button className="navbar-toggler" type="button"
    data-toggle="collapse" 
    data-target="#navbarNav" >
    <span className="navbar-toggler-icon"/>
  </button>

  <a className="navbar-brand navbar-right" href="#">Icon1</a>

  <div id="navbarNav" className="collapse navbar-collapse" >
    <ul className="navbar-nav">
      <li nav items></li>
      ....
    </ul>
  </div>

  <a className="navbar-brand navbar-right" href="#">Icon2</a>
</nav>

当有足够的水平空间不需要导航栏切换时,Icon1在错误的地方:

icon 1 in wrong place

但是当navbar-toggler处于事件状态,菜单已展开,Icon2在错误的地方:

enter image description here

目前,我只打算拥有 Icon 之一我的应用程序中的菜单项。我只是在这里使用两个来说明将图标放在两个不同位置时的不同行为。

请注意,当 navbar-toggler 时,这两个展示位置似乎都按照我想要的方式工作菜单处于事件状态,但已折叠:

enter image description here

我需要做什么才能使图标像 Icon2 一样当有很多空间时navbar-togglerIcon1当空间受限时?

最佳答案

  • 使用d-flexjustify-content-between对于 navbar-container .
  • 使用w-100对于 nav
  • 使用<a class="navbar-brand navbar-right" href="#">Icon1</a>ExampleApp 之后 anchor 标签。
  • 使用ml-auto对于 navbar-toggler
  • 使用<a class="navbar-brand navbar-right pt-2" href="#">Icon2</a>nav之后标签。

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css" rel="stylesheet" />

<div style="background-color: rgb(52, 58, 64);">
  <div id="navbar-container" class="container d-flex justify-content-between">
    <nav class="navbar navbar-expand-sm navbar-dark bg-dark  w-100">
      <a class="navbar-brand" href="#">ExampleApp</a><a class="navbar-brand navbar-right" href="#">Icon1</a>
      <button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div id="navbarNav" class="collapse navbar-collapse">
        <ul class="navbar-nav">
          <li class="nav-item active"><a class="nav-link" href="#">Item 1</a></li>
          <li class="nav-item "><a class="nav-link" href="#">Item 2</a></li>
          <li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">Options</a>
            <div class="dropdown-menu"><a class="dropdown-item" href="#">Drop Item 1</a><a class="dropdown-item" href="#">Drop Item 2</a>
              <div class="dropdown-divider"></div><a class="dropdown-item" href="#">Drop Item 3</a></div>
          </li>
        </ul>
      </div>
    </nav><a class="navbar-brand navbar-right pt-2" href="#">Icon2</a></div>
</div>

https://codepen.io/anon/pen/NzxqxW

更新

如果你想对齐两个icons在右侧,使用此方法。

  • 使用d-flexjustify-content-between对于 navbar-container .
  • 使用w-100对于 nav
  • 使用ml-auto对于 navbar-toggler .
  • 创建一个新的 d-flex justify-content-between div 在 nav 之外对于两个图标。

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css" rel="stylesheet" />

<div style="background-color: rgb(52, 58, 64);">
  <div id="navbar-container" class="container d-flex justify-content-between">
    <nav class="navbar navbar-expand-sm navbar-dark bg-dark  w-100">
      <a class="navbar-brand" href="#">ExampleApp</a>
      <button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div id="navbarNav" class="collapse navbar-collapse">
        <ul class="navbar-nav">
          <li class="nav-item active"><a class="nav-link" href="#">Item 1</a></li>
          <li class="nav-item "><a class="nav-link" href="#">Item 2</a></li>
          <li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">Options</a>
            <div class="dropdown-menu"><a class="dropdown-item" href="#">Drop Item 1</a><a class="dropdown-item" href="#">Drop Item 2</a>
              <div class="dropdown-divider"></div><a class="dropdown-item" href="#">Drop Item 3</a></div>
          </li>
        </ul>
      </div>
    </nav>
    <div class="d-flex justify-content-between pt-2">
      <a class="navbar-brand navbar-right" href="#">Icon1</a>
      <a class="navbar-brand navbar-right" href="#">Icon2</a></div>
  </div>
</div>

https://codepen.io/anon/pen/RJrxpL

关于css - Bootstrap 4 导航栏 : how to right-align an icon and keep it out of the toggle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50664550/

相关文章:

css - 显示 :table 内的 Bootstrap 响应表

html - Bootstrap 4 order Masonry-like column cards 水平而不是垂直

javascript - 如何改变 slider 的高度?

python - 抓取网页并需要选择正确的选择器

javascript - 带有下拉菜单的响应式导航栏不起作用

html - 当包含另一个特定类时覆盖 'hover'

python - 单击引导按钮/链接时如何传递参数?

html - 内部元素的显示类无法正常工作

css - Visual Studio 2015 中的 LESS

javascript - 有没有IE a :hover fix?