Bootstrap 4 выравнивает элементы панели навигации вправо


341

Как выровнять элемент навигационной панели вправо?

Я хочу иметь логин и зарегистрироваться справа. Но все, что я пытаюсь, похоже, не работает.

Изображение Навбара

Это то, что я пробовал до сих пор:

  • <div>во всем <ul>с атрибутом:style="float: right"
  • <div>во всем <ul>с атрибутом:style="text-align: right"
  • попробовал эти две вещи на <li>тегах
  • попробовал все эти вещи снова с !importantдобавленным до конца
  • изменился nav-itemна nav-rightв<li>
  • добавил pull-sm-rightкласс к<li>
  • добавил align-content-endкласс к<li>

Это мой код:

<div id="app" class="container">
  <nav class="navbar navbar-toggleable-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand" href="#">Navbar</a>
    <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="#">Pricingg</a>
      </li>
    </ul>
    <ul class="navbar-nav " >
      <li  class="nav-item">
        <a class="nav-link" href="{{ url('/login') }}">Login</a>
      </li>
      <li  class="nav-item">
        <a class="nav-link" href="{{ url('/register') }}">Register</a>
      </li>
    </ul>
  </nav>
  @yield('content')
</div>

Navbars построены с flexbox от версии альфы 6.
максимум

1
Да, так что я должен сделать, чтобы он выровнялся вправо. Я уже попробовал пару вещей flexbox без какой-либо удачи. : /
Луук Вуйстер

Ответы:


533

Bootstrap 4 имеет много разных способов выравнивания элементов панели навигации . float-rightне будет работать, потому что сейчас есть панель навигации flexbox.

Вы можете использовать mr-autoдля автоматического правого поля на 1-й (слева) navbar-nav. В качестве альтернативы , ml-autoможет быть использован на 2-й (справа) navbar-nav, или если у вас есть только один navbar-nav.

<nav class="navbar navbar-expand-md navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav mr-auto">
            <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>
        </ul>
        <ul class="navbar-nav">
            <li class="nav-item">
                <a class="nav-link" href="{{ url('/login') }}">Login</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{ url('/register') }}">Register</a>
            </li>
        </ul>
    </div>
</nav>

https://codeply.com/go/P0G393rzfm

Есть также утилиты flexbox. В этом случае у вас есть 2navbar-nav с, так что justify-content-betweenв navbar-collapseбудет работать даже пространство между ними,

 <div class="navbar-collapse collapse justify-content-between">
     <ul class="navbar-nav mr-auto">
               ..
     </ul>
     <ul class="navbar-nav">
           ..
     </ul>
 </div>


Обновление для Bootstrap 4.0 и новее

Начиная с бета-версии Bootstrap 4, ml-autoвсе еще будет работать, чтобы подтолкнуть элементы вправо. Просто знайте, что navbar-toggleable-классы изменились наnavbar-expand-*

Обновленная навигационная панель справа для Bootstrap 4


Еще один частый сценарий выравнивания по правому краю Bootstrap 4 Navbar включает в себя кнопку справа, которая остается за пределами мобильного коллапса навигации так что она всегда отображается на любой ширине.

Кнопка выравнивания вправо, которая всегда видна

введите описание изображения здесь

введите описание изображения здесь


Связанный: Bootstrap NavBar с левыми, центральными или правыми выровненными элементами


1
mr-autoне работает, если самый правый элемент - это dropdown. Выпадающие элементы проливаются через правый край страницы.
Эге Эрсоз

6
Это работает: codeply.com/go/P0G393rzfm - проблема не mr-autoв том, как в вопросе о правильном выравнивании, которое работает. Опубликуйте новый вопрос, если у вас есть проблемы с выпадающим списком, но вы, скорее всего, имеете в виду эту проблему: stackoverflow.com/questions/43867258/…
Zim

2
Вы также можете добавить .dropdown-menu-rightк выровненным по правому краю выпадающим меню на панели навигации. Несоблюдение этого требования может отрезать выпадающий список при определенной ширине.
rybo111

@ZimSystem спасибо за ваши ответы. Я следил за вашим ответом здесь stackoverflow.com/questions/19733447/… . У меня есть вопрос, как мне получить один предмет, который будет слева, а другой - справа?
Локеш Пандей

В codeply.com/go/P0G393rzfm вы показали один ul слева и один ul справа. Это было достигнуто путем добавления mr-auto к первому. Но что, если у меня есть только одна ул? Я не хочу создавать пустой ul только для выравнивания другого справа.
Сантош Кумар

140

В моем случае я хотел только один набор кнопок / опций навигации и обнаружил, что это будет работать:

<div class="collapse navbar-collapse justify-content-end" id="navbarCollapse">
  <ul class="navbar-nav">
    <li class="nav-item">
      <a class="nav-link" href="#">Sign Out</a>
    </li>
  </ul>
</div>

Итак, вы добавите justify-content-endв div и пропустите mr-autoв списке.

Вот рабочий пример .


3
@numediaweb В примере с OP он использует два элемента внутри nav, выравнивая один левый и один правый; где я использовал только один и выровнял его вправо. Это не правильный ответ, но он полезен как ответ на небольшую вариацию вопроса;)
Крейг ван

Это работает для одного navbar-nav, но этот mr-autoметод используется в документации Bootstrap .
Зим

mr-autoиспользуется в документах, но не для выравнивания элементов по левому краю. Этот ответ является семантически правильным, как упомянуто в этой статье: blog.getbootstrap.com/2017/01/06/bootstrap-4-alpha-6
qwaz

Вопрос в том, пытаетесь ли вы выровнять 2 списка ссылок или 1. Если только 1, ваш ответ работает и был очень полезен для меня. Спасибо!
босоножки

Это сработало для меня, но я не знаю, почему тот, что выше этого ответа, не работает.
Сухайль Ахтар

59

Для тех, кто все еще борется с этой проблемой в BS4, просто попробуйте следующий код -

<ul class="navbar-nav ml-auto">

7
Нет - это все выравнивает направо. Вопрос говорит, что он хочет выровнять только один элемент вправо.
NickG

2
Проверьте официальный документ об m*-autoэтом толкает контент влево или вправо в зависимости от того, где вы положили класс
Пьер де LESPINAY

@PierredeLESPINAY, да ml-auto, подталкивает контент в крайнее правое положение, но я просто удивился, почему mr-0не могу выполнить эту работу?
авокадо

42

На Bootstrap 4

Если вы хотите выровнять марку слева от вас, а все навигационные элементы - справа, измените значение mr-autoпо умолчанию наml-auto

<ul class="navbar-nav ml-auto">

32

На Bootsrap 4.0.0-beta.2 , ни один из ответов, перечисленных здесь, не работал для меня. Наконец, сайт Bootstrap дал мне решение не через документацию, а через исходный код страницы ...

Getbootstrap.com выровнять их право navbar-navвправо с помощью следующего класса: ml-md-auto.


1
Работал красиво для меня. Больше ничего не делал.
Мария Кэмпбелл


9

Используйте этот код для перемещения элементов вправо.

<div class="collapse navbar-collapse justify-content-end">

1
это не будет работать, когда у вас свернутое Меню, однако, с ml-auto оно будет работать, потому что, когда меню свернуто, элементы <li> по-прежнему занимают 100% ширины, поэтому поле не будет применено.
Райан С

8

Если вы хотите, чтобы «Дом», «Функции» и «Цены» находились слева сразу после вашего nav-brand, а затем войдите и зарегистрируйтесь справа, оберните два списка <div>и используйте .justify-content-between:

<div class="collapse navbar-collapse justify-content-between">
<ul>....</ul>
<ul>...</ul>
</div>

7

Просто добавьте mr-autoкласс по адресу ul:

<ul class="nav navbar-nav mr-auto">

Если у вас есть список меню с обеих сторон, вы можете сделать что-то вроде этого:

<ul class="navbar-nav mr-auto">
  <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="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#">Disabled</a>
  </li>
</ul>
<ul class="navbar-nav ml-auto">
  <li class="nav-item active">
    <a class="nav-link" href="#">left 1</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">left 2</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#">left disable</a>
  </li>
</ul>

5

используйте класс flex-row-reverse

<nav class="navbar navbar-toggleable-md navbar-light">
    <div class="container">
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false"
          aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <a class="navbar-brand" href="#">
            <i class="fa fa-hospital-o fa-2x" aria-hidden="true"></i>
        </a>
        <div class="collapse navbar-collapse flex-row-reverse" id="navbarNavAltMarkup">
            <ul class="navbar-nav">
                <li><a class="nav-item nav-link active" href="#" style="background-color:#666">Home <span class="sr-only">(current)</span></a</li>
                <li><a class="nav-item nav-link" href="#">Doctors</a></li>
                <li><a class="nav-item nav-link" href="#">Specialists</a></li>
                <li><a class="nav-item nav-link" href="#">About</a></li>
            </ul>
        </div>
    </div>
</nav>

2

В boostrap 4 мало что изменилось. Чтобы выровнять панель навигации по правой стороне, нужно сделать всего два изменения. они есть:

  1. в navbar-navклассе добавить w-100как navbar-nav w-100сделать ширину как 100
  2. в nav-item dropdownклассе добавить ml-autoкак nav-item dropdown ml-autoсделать поле слева как авто.

Если вы не поняли, пожалуйста, обратитесь к изображению, которое я прикрепил к этому.

CodePen Link

введите описание изображения здесь

Полный исходный код

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <ul class="navbar-nav w-100">
      <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 dropdown ml-auto">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>  
  </div>
</nav>

2

Для начальной загрузки 4.3.1 я использовал nav-pills, и у меня ничего не получалось, кроме этого:

    <ul class="nav nav-pills justify-content-end ml-auto">
    <li ....</li>
    </ul>


0

Я использую Angular 4 (v.4.0.0) и ng-bootstrap (Bootstrap 4). Этот код не все уместен, но надеются, что люди могут выбрать, что работает. Мне потребовалось некоторое время, чтобы найти решение, чтобы мои элементы правильно оправдались, правильно свернулись и применили раскрывающийся список в моем профиле Google (используя OAuth).

<div id="header" class="header">
  <nav class="navbar navbar-toggleable-sm navbar-inverse bg-faded fixed-top">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
      aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
    <a class="navbar-brand" href="#">
          <img alt='Brand' src='../assets/images/logo-white.png' class='navbar-logo-img d-inline-block align-top '>
          <span class="navbar-logo-text">Oncoscape</span>
        </a>
    <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
      <ul class="navbar-nav float-left">
        <a class="navbar-items nav-item nav-link active " *ngIf='authenticated' (click)='goDashboard()'>
          <span class="fa fa-dashboard"></span>Dashboard
        </a>
        <a class="nav-item nav-link navbar-items active" href="http://resources.sttrcancer.org/oncoscape-contact">
          <span class="fa fa-comments"></span>Feedback
        </a>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <img *ngIf='user && authenticated'  class="navbar-pic" src={{user.thumbnail}} alt="Smiley face">
          </a>
          <div *ngIf='user && authenticated' class="dropdown-menu " aria-labelledby="navbarDropdownMenuLink">
            <a class="dropdown-item" (click)="toProfile()">Account</a>
            <div class="dropdown-item">
              <app-login></app-login>
            </div>
          </div>
        </li>
      </ul>
    </div>
  </nav>
</div>
<router-outlet></router-outlet>

0

Для бета-версии Bootstrap 4 пример навигационной панели с элементами, выровненными по правой стороне:

<div id="app" class="container">
  <nav class="navbar navbar-expand-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="navbar-nav mr-auto">
      <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="#">Pricingg</a>
      </li>
    </ul>
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" href="{{ url('/login') }}">Login</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="{{ url('/register') }}">Register</a>
      </li>
    </ul>
  </nav>
</div>

0

Использование гибкого поля начальной загрузки помогает нам контролировать размещение и выравнивание вашего элемента навигации. для вышеупомянутой проблемы добавление mr-auto является лучшим решением.

<div id="app" class="container">
  <nav class="navbar navbar-toggleable-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="navbar-nav mr-auto">
      <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="#">Pricingg</a>
      </li>
    </ul>
    <ul class="navbar-nav  " >
      <li  class="nav-item">
        <a class="nav-link" href="{{ url('/login') }}">Login</a>
      </li>
      <li  class="nav-item">
        <a class="nav-link" href="{{ url('/register') }}">Register</a>
      </li>
    </ul>
  </nav>
  @yield('content')
</div>

другое размещение может включать

fixed- top
    fixed bottom
    sticky-top

0

Рабочий пример для БС v4.0.0-beta.2:

<body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>

      <div class="collapse navbar-collapse" id="navbarNavDropdown">
        <ul class="navbar-nav mr-auto">
          <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="#">Pricingg</a>
          </li>
        </ul>
        <ul class="navbar-nav">
          <li class="nav-item">
            <a class="nav-link" href="#">Login</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Register</a>
          </li>
        </ul>
      </div>
    </nav>


    <div class="container-fluid">
      container content
    </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="node_modules/jquery/dist/jquery.slim.min.js"></script>
    <script src="node_modules/popper.js/dist/umd/popper.min.js"></script>
    <script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
  </body>

0

Если все вышеперечисленное не помогло, я добавил 100% ширину к классу navbar в CSS. До этого г-н авто не работал для меня над этим проектом с использованием 4.1.


-1

Найдите строку 69 в verndor-prefixes.less и запишите ее следующим образом:

.panel {
    margin-bottom: 20px;
    height: 100px;
    background-color: #fff;
    border: 1px solid transparent;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
    box-shadow: 0 1px 1px rgba(0,0,0,.05);
}


-2

Просто скопировал это с одной из страниц getbootstrap для выпущенной версии 4, которая работала намного лучше, чем выше

<div class="d-none d-xl-block col-xl-2 bd-toc float-md-right">
    <ul class="section-nav">
         <li class="toc-entry toc-h2"><a href="#overview">Overview</a></li>
         <li class="toc-entry toc-h2"><a href="#classes">Classes</a></li>
         <li class="toc-entry toc-h2"><a href="#mixins">Mixins</a></li>
         <li class="toc-entry toc-h2"><a href="#responsive">Responsive</a></li>
    </ul>
</div> 

-3

Я новичок в переполнении стека и новичок в разработке переднего плана. Это то, что сработало для меня. Поэтому я не хотел отображать элементы списка.

.hidden {
  display:none;
  } 
  
 #loginButton{
 
 margin-right:2px;
 
 }
<nav class="navbar navbar-toggleable-md navbar-light bg-faded fixed-top">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">NavBar</a>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active hidden">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item hidden">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item hidden">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit" id="loginButton"><a href="#">Log In</a></button>
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit"><a href="#">Register</a></button>
    </form>
  </div>
</nav>

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.