Bootstrap: Положение раскрывающегося меню относительно элемента панели навигации.
У меня есть следующее раскрывающееся меню
<label class="dropdown-toggle" role="button" data-toggle="dropdown" data-target="#">
Action <b class="caret"></b></label>
<ul class="dropdown-menu" role="menu" aria-labelledby="lang-selector" id="lang-selector">
dropdown content goes here
</ul>
Верхний левый angular раскрывающегося списка находится в нижнем левом углу текста (действие), но я надеюсь, что позиция верхнего правого угла раскрывающегося списка находится в нижнем правом месте текста, Как я могу это сделать?
Ответы
Ответ 1
Это тот эффект, которого мы пытаемся достичь:
![A right-aligned menu]()
Классы, которые необходимо применить, изменились с выпуском Bootstrap 3.1.0 и снова с выпуском Bootstrap 4. Если одно из приведенных ниже решений не работает , дважды проверьте номер версии Bootstrap, который вы ' повторно импортируете и попробуйте другой.
Бутстрап 3
До версии 3.1.0
Вы можете использовать класс pull-right
для выравнивания правой части меню с помощью каретки:
<li class="dropdown">
<a class="dropdown-toggle" href="#">Link</a>
<ul class="dropdown-menu pull-right">
<li>...</li>
</ul>
</li>
Скрипка: http://jsfiddle.net/joeczucha/ewzafdju/
После v3.1.0
Начиная с версии 3.1.0, мы не рекомендуем .pull-right в выпадающих меню. к Выровняйте меню по правому краю, используйте .dropdown-menu-right. Выравнивание по правому краю компоненты в панели навигации используют версию этого класса для автоматически выровнять меню. Чтобы переопределить это, используйте .dropdown-menu-left.
Вы можете использовать класс dropdown-right
для выравнивания правой части меню с помощью каретки:
<li class="dropdown">
<a class="dropdown-toggle" href="#">Link</a>
<ul class="dropdown-menu dropdown-menu-right">
<li>...</li>
</ul>
</li>
Скрипка: http://jsfiddle.net/joeczucha/1nrLafxc/
Бутстрап 4
Класс Bootstrap 4 такой же, как Bootstrap> 3.1.0, просто следите за тем, как остальная часть разметки немного изменилась:
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#">
Link
</a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="#">...</a>
</div>
</li>
Fiddle: https://jsfiddle.net/joeczucha/f8h2tLoc/
Ответ 2
Не уверен, как другие люди решают эту проблему, или у Bootstrap есть какая-либо конфигурация для этого.
Я нашел этот поток, который предоставляет решение:
https://github.com/twbs/bootstrap/issues/1411
В одном из сообщений предлагается использовать
<ul class="dropdown-menu" style="right: 0; left: auto;">
Я тестировал и работает.
Надеюсь узнать, предоставляет ли Bootstrap конфигурацию для этого, а не через вышеприведенный css.
Приветствия.
Ответ 3
На основе документа Bootstrap:
Начиная с версии v.1.1.0, pull-right устаревает в выпадающих меню.
использовать .dropdown-menu-right
например:
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dLabel">
Ответ 4
Если вы хотите отобразить меню вверх, просто добавьте класс "выпадающий"
и удалите класс "выпадающий", если существует из того же div.
<div class="btn-group dropup">
![enter image description here]()
Ответ 5
Boostrap имеет класс для класса navbar-right
. Таким образом, ваш код будет выглядеть следующим образом:
<ul class="nav navbar-right">
<li class="dropdown">
<a class="dropdown-toggle" href="#" data-toggle="dropdown">Link</a>
<ul class="dropdown-menu">
<li>...</li>
</ul>
</li>
</ul>
Ответ 6
Даже если уже поздно, я надеюсь, что смогу кому-нибудь помочь. если выпадающее меню или подменю находится в правой части экрана, оно открывается с левой стороны, если меню или подменю находится слева, оно открывается с правой стороны.
$(".dropdown-toggle").on("click", function(event){//"show.bs.dropdown"
var liparent=$(this.parentElement);
var ulChild=liparent.find('ul');
var xOffset=liparent.offset().left;
var alignRight=($(document).width()-xOffset)<xOffset;
if (liparent.hasClass("dropdown-submenu"))
{
ulChild.css("left",alignRight?"-101%":"");
}
else
{
ulChild.toggleClass("dropdown-menu-right",alignRight);
}
});
Для определения вертикального положения вы также можете добавить
$( document ).ready(function() {
var liparent=$(".dropdown");
var yOffset=liparent.offset().top;
var toTop=($(document).height()-yOffset)<yOffset;
liparent.toggleClass("dropup",toTop);
});
https://jsfiddle.net/jd1100/rf9zvdhg/28/
Ответ 7
Если вы хотите центрировать выпадающее меню, это решение.
<ul class="dropdown-menu" style="right:auto; left: auto;">
Ответ 8
используйте этот код:
<ul class="dropdown-menu" role="menu">
<li style="text-align: right;"><a href="#">ParsLearn[dot]ir</a></li>
</ul>