Arhn - архитектура программирования

Пункты раскрывающегося меню Bootstrap Navbar справа

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

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

<nav class="navbar">
  <div class="container">
    <div class="navbar-nav d-flex flex-row">
      ...
    </div>
  </div>
</nav>

Ответы:


1

Bootstrap 5 (обновление 2021 г.)

Используйте класс dropdown-menu-end для dropdown-menu, чтобы выровнять элементы внутри меню вправо.

    <div class="dropdown-menu dropdown-menu-end">
        <a class="dropdown-item" href="#">Link</a>
        <a class="dropdown-item" href="#">Link</a>
        <a class="dropdown-item" href="#">Link</a>
    </div>

https://codeply.com/p/kWLLKdjdpC

Bootstrap 4 (исходный ответ)

Используйте класс dropdown-menu-right, чтобы выровнять элементы внутри меню вправо.

    <div class="dropdown-menu dropdown-menu-right text-right">
        <a class="dropdown-item" href="#">Link</a>
        <a class="dropdown-item" href="#">Link</a>
        <a class="dropdown-item" href="#">Link</a>
    </div>

http://codeply.com/go/6Mf9aK0P8G

09.05.2017
  • Работает как с меню положения в области просмотра, когда оно находится за пределами экрана, так и с выравниванием text-right. 25.04.2018

  • 2

    Обновление для Bootstrap4-бета:

    Поскольку в бета-версии bootstrap4 есть ошибка, мне пришлось добавить

    .dropdown-menu-right { 
        right: 0; 
        left: auto; 
    }
    

    чтобы заставить его работать.

    17.08.2017
  • Спасибо - я надеялся избежать добавления CSS, но это сработало. 09.02.2018

  • 3

    Класс .dropdown-menu-right имеет другое поведение, если он находится внутри класса .navbar. Вы можете прочитать «Heads up» в документах здесь:

    https://getbootstrap.com/docs/4.0/components/dropdowns/#menu-alignment

    На самом деле для решения я использую этот класс:

    .navbar .dropdown-menu-right { 
        right: 0; 
        left: auto; 
    }
    
    20.03.2018

    4

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

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

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

    https://stackoverflow.com/a/58474527/10907720

    20.10.2019

    5

    Я изменил его, добавив dir="rtl"

    <div class="dropdown-menu " dir="rtl" 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>
    
    20.02.2020

    6

    Я столкнулся с той же проблемой с дополнительной трудностью, потому что мое меню создано на PHP - количество элементов и выпадающего содержимого не фиксировано.

    Вот решение, которое по возможности центрирует раскрывающиеся списки, в противном случае выравнивает их по левому или правому краю, чтобы предотвратить выход за пределы области просмотра:

    var $maxWidthElement = $('.navbar'),
        maxWidth = $maxWidthElement.width();
    
    var positionDropdowns = function() {
        $('.dropdown-menu').each(function() {
            var $navItem = $(this).closest('.dropdown'),
                dropdownWidth = $(this).outerWidth(),
                dropdownOffsetLeft = $navItem.offset().left,
                dropdownOffsetRight = maxWidth - (dropdownOffsetLeft + dropdownWidth),
                linkCenterOffsetLeft = dropdownOffsetLeft + $navItem.outerWidth() / 2;
    
            if ((linkCenterOffsetLeft - dropdownWidth / 2 > 0) & (linkCenterOffsetLeft + dropdownWidth / 2 < maxWidth)) {
                // center the dropdown menu if possible
                $(this).css('left', -(dropdownWidth / 2 - $navItem.outerWidth() / 2));
            } else if ((dropdownOffsetRight < 0) & (dropdownWidth < dropdownOffsetLeft + $navItem.outerWidth())) {
                // set the dropdown menu to left if it exceeds the viewport on the right
                $(this).addClass('dropdown-menu-right');
            } else if (dropdownOffsetLeft + dropdownWidth > maxWidth) {
                // full width if the dropdown is too large to fit on the right
                $(this).css({
                    left: 0,
                    right: 0,
                    width:
                        $(this)
                            .closest('.container')
                            .width() + 'px'
                });
            }
        });
    };
    
    var resizeTimer;
    
    $(window).on('resize', function(e) {
        clearTimeout(resizeTimer);
        resizeTimer = setTimeout(function() {
            maxWidth = $maxWidthElement.width();
            positionDropdowns();
        }, 250);
    });
    
    positionDropdowns();
    window.onresize = positionDropdowns;
    

    https://codepen.io/migli/pen/RELPPj

    28.12.2018

    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..