Bootstrap 4 элементы navbar на правой стороне [дубликат]
этот вопрос уже есть ответ здесь:
- Bootstrap 4 выровнять элементы навигационной панели справа 18 ответов
Я просто переключился на bootstrap 4 и переработал все мои html и scss для работы с ним, и я не могу найти, как поместить группу nav-элементов в правой части навигационной панели. Это моя навигационная панель код:
<nav class="navbar navbar-full navbar-dark bg-primary">
<button class="navbar-toggler hidden-md-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"></button>
<%= link_to "Living Recipe", recipes_path(sort_attribut: "popularity", sort_order: :desc), class: "navbar-brand" %>
<div class="collapse navbar-toggleable-sm" id="navbarResponsive">
<ul class="nav navbar-nav float-md-left">
<li class="nav-item">
<%= form_tag(recipes_path, :method => "get", id: "search-form", class: "form-inline") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Recipes", class: "form-control col-md-8" %>
<% end %>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="http://example.com" id="responsiveNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Browse</a>
<div class="dropdown-menu" aria-labelledby="responsiveNavbarDropdown">
<%= link_to "Popular", recipes_path(sort_attribute: "popularity", sort_order: :desc), class: "dropdown-item" %>
<%= link_to "Newest", recipes_path(sort_attribute: "created_at", sort_order: :desc), class: "dropdown-item" %>
<%= link_to "Most Updated", recipes_path(sort_attribute: "most_active", sort_order: :desc), class: "dropdown-item" %>
<%= link_to "Most Saved", recipes_path(sort_attribute: "save_count", sort_order: :desc), class: "dropdown-item" %>
</div>
</li>
</ul>
<ul class="nav navbar-nav float-md-right">
<% if user_signed_in? %>
<li class="dropdown">
<a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<%= current_user.displayname.present? ? "D-ring" : current_user.firstname %>
</a>
<div class="dropdown-menu" aria-labelledby="responsiveNavbarDropdown">
<%= link_to "Profile", user_path(current_user.id), class: "dropdown-item" %>
<%= link_to "Recipe Box", user_saved_recipes_path(current_user.id), class: "dropdown-item" %>
<%= link_to "Add Recipe", new_recipe_path, class: "dropdown-item" %>
<%= link_to "Submitted Recipes", user_path(current_user.id), class: "dropdown-item" %>
<%= link_to "Sign Out", destroy_user_session_path, :method => :delete, class: "dropdown-item" %>
</div>
</li>
<% else %>
<li class="nav-item">
<%= link_to "Create Account", '', data: {:'toggle' => 'modal', :'target' => '#signupModal'}, class: "nav-link" %>
</li>
<li class="nav-item">
<%= link_to "Login", '', data: {:'toggle' => 'modal', :'target' => '#loginModal'}, class: "nav-link" %>
</li>
<% end %>
</ul>
</div>
</nav>
и это скриншот того, как это выглядит
8 ответов:
TL; DR:
создать еще один
<ul class="navbar-nav ml-auto">
для элементов навигационной панели, которые вы хотите справа.ml-auto
будет тянуть свойnavbar-nav
справа, гдеmr-auto
потянет его влево.протестировано против Bootstrap v4.1. 3
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"/> <style> /* Stackoverflow preview fix, please ignore */ .navbar-nav { flex-direction: row; } .nav-link { padding-right: .5rem !important; padding-left: .5rem !important; } /* Fixes dropdown menus placed on the right side */ .ml-auto .dropdown-menu { left: auto !important; right: 0px; } </style> </head> <body> <nav class="navbar navbar-expand-lg navbar-dark bg-primary rounded"> <a class="navbar-brand" href="#">Navbar</a> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link">Left Link 1</a> </li> <li class="nav-item"> <a class="nav-link">Left Link 2</a> </li> </ul> <ul class="navbar-nav ml-auto"> <li class="nav-item"> <a class="nav-link">Right Link 1</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown on Right</a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action with a lot of text inside of an item</a> </div> </li> </ul> </nav> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script> </body> </html>
как вы можете видеть, дополнительные правила стиля были добавлены для учета некоторых странностей в окне предварительного просмотра Stackoverflows.
Вы должны быть в состоянии игнорировать те правила в вашем проекте.по состоянию на v4.0.0 это, кажется, официальный способ сделать это.
EDIT: я изменил сообщение, чтобы включить выпадающее меню, расположенное в правой части навигационной панели, как это было предложено @Bruno. Он нуждается в его
left
иright
атрибуты для инвертирования. Я добавил дополнительный фрагмент css в начало примера кода.
Обратите внимание, что пример показывает мобильную версию при нажатии кнопки . Для просмотра настольная версия вы должны нажать кнопку ..ml-auto .dropdown-menu { left: auto !important; right: 0px; }
в таблице стилей должен делать трюк.
В версии 4, это проще. Просто поставьте
ml-auto
классul
вот так:<ul class="nav navbar-nav ml-auto">
Это должно работать для Альфа-6. Ключом является класс "mr-auto" на левом навигаторе, который будет нажимать правую навигацию вправо. Вам также нужно добавить navbar-toggleable-md или он будет складываться в столбец вместо строки. Обратите внимание, что я не добавил остальные элементы переключения (например, кнопку переключения), я добавил достаточно, чтобы отформатировать его в соответствии с запросом. Вот более полные примеры https://v4-alpha.getbootstrap.com/examples/navbars/.
<!DOCTYPE html> <html lang="en"> <head> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" /> </head> <body> <nav class="navbar navbar-toggleable-md navbar-light bg-faded"> <div class="container"> <a class="navbar-brand" href="#">Navbar</a> <ul class="nav navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> </ul> <ul class="nav navbar-nav"> <li class="nav-item"> <a class="nav-link" href="#">Link on the Right</a> </li> </ul> </div> </nav> </body>
В версии Bootstrap 4 alpha-6, поскольку navbar использует модель flex, вы можете использовать
justify-content-end
в Родительском div и удалитьmr-auto
.<div class="collapse navbar-collapse justify-content-end" id="navbarText"> <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="#">Link</a> </li> <li class="nav-item"> <a class="nav-link disabled" href="#">Disabled</a> </li> </ul> </div>
это работает как шарм :)
у меня есть рабочий codepen с левыми и правыми выровненными навигационными ссылками, которые все сворачиваются в отзывчивое меню вместе с помощью
.justify-content-between
на родительском теге:https://codepen.io/epan/pen/bREVVW?editors=1000<nav class="navbar navbar-toggleable-sm navbar-inverse bg-inverse"> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="#">Acme</a> <div class="collapse navbar-collapse justify-content-between" id="navbar"> <div class="navbar-nav"> <a class="nav-item nav-link" href="#">Ball Bearings</a> <a class="nav-item nav-link" href="#">TNT Boxes</a> </div> <div class="navbar-nav"> <a class="nav-item nav-link" href="#">Logout</a> </div> </div> </nav>
С Bootstrap v4.0. 0-Альфа.6: Два
<ul>
s (.navbar-na
), С.mr-auto
и с.ml-auto
:<nav ...> ... <div class="collapse navbar-collapse"> <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="#">Left Link </a> </li> </ul> <ul class="navbar-nav ml-auto"> <li class="nav-item"> <a class="nav-link" href="#">Right Link </a> </li> </ul> </div> </nav>
в моем случае, я искал решение, которое позволяет один элементов навигационной панели, которые должны быть выровнены по правому краю. Для того чтобы сделать это, вы должны добавить
style="width:100%;"
до<ul class="navbar-nav">
и затем добавитьml-auto
класс для вашего элемента navbar.
вот и простой пример.
<!-- Navigation bar--> <nav class="navbar navbar-toggleable-md bg-info navbar-inverse"> <div class="container"> <button class="navbar-toggler" data-toggle="collapse" data-target="#mainMenu"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="mainMenu"> <div class="navbar-nav ml-auto " style="width:100%"> <a class="nav-item nav-link active" href="#">Home</a> <a class="nav-item nav-link" href="#">About</a> <a class="nav-item nav-link" href="#">Training</a> <a class="nav-item nav-link" href="#">Contact</a> </div> </div> </div> </nav>