bootstrap 4 выпадающее меню navbar пользовательские настройки "Welcome, User" - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в css и bootstrap и не могу понять, как это решить. Любая помощь приветствуется.

У меня две проблемы с моим кодом.

1) Когда я нажимаю на меню «Добро пожаловать, пользователь» на маленьких экранах (мобильных), внутри навигационной панели открывается раскрывающееся меню, искажающее панель и изменяющее ее высоту. Я хочу, чтобы он вел себя так же, как на больших экранах (например, на компьютерах). Когда я нажимаю, я хочу, чтобы он открывал пункты меню без изменения панели навигации, перед панелью навигации, но не внутри.

2) Еще одна проблема: даже на больших экранах я не вижу пункты меню полностью. Часть текста предметов спрятана по краю экрана. Мне бы хотелось, чтобы меню полностью отображалось на экране, независимо от того, настольное оно или мобильное.

Чтобы было понятно, я записываю очень маленькое видео, демонстрирующее проблему: https://puu.sh/Bq34w/ac56908be0.mp4

Полный код: https://jsfiddle.net/fredslz/0v7qwjdm/12/

<!doctype html>
<html lang="en">
<body class="text-center">

<nav class="navbar navbar-expand-md navbar-light fixed-top" style="background-color: #FFFFFF;">

        <button class="navbar-toggler navbar-nav mr-auto" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span> 
        </button>

        <a class="navbar-brand mx-auto" href="#">My Brand</a>

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

                <li class="dropdown"> 

                    <a href="#" class="nav-link dropdown-toggle" id="navbarDropdown" data-toggle="dropdown" aria-expanded="false"> 
                            Welcome, User <b class="caret"></b>
                        </a>

                        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                                <a class="dropdown-item" href="#">Action</a>
                                <a class="dropdown-item" href="#">Another action</a>
                                <div class="dropdown-divider"></div>
                                <a class="dropdown-item" href="#">Something else here</a>
                        </div>

                </li> 
        </ul>



</nav>



</body>
</html>

И CSS:

.navbar {
   -webkit-box-shadow: 0 8px 6px -6px #999;
   -moz-box-shadow: 0 8px 6px -6px #999;
   box-shadow: 0 8px 6px -6px #999;
}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

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

.navbar-nav .dropdown-menu {
  position: absolute;
}

Для выравнивания выпадающего списка просто добавьте класс dropdown-menu-right к вашему dropdown-menu.

См. Демонстрацию ниже (я дал !important, чтобы справиться с каскадным порядком во фрагменте) и рабочая скрипка здесь :

.navbar {
  -webkit-box-shadow: 0 8px 6px -6px #999;
  -moz-box-shadow: 0 8px 6px -6px #999;
  box-shadow: 0 8px 6px -6px #999;
  /* the rest of your styling */
}

.navbar-nav .dropdown-menu {
  position: absolute !important;
}
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>


<nav class="navbar navbar-expand-md navbar-light fixed-top" style="background-color: #FFFFFF;">

  <button class="navbar-toggler navbar-nav mr-auto" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
                  <span class="navbar-toggler-icon"></span> 
            </button>

  <a class="navbar-brand mx-auto" href="#">My Brand</a>

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

    <li class="dropdown">

      <a href="#" class="nav-link dropdown-toggle" id="navbarDropdown" data-toggle="dropdown" aria-expanded="false"> 
                                Welcome, User <b class="caret"></b>
                            </a>

      <div class="dropdown-menu  dropdown-menu-right" aria-labelledby="navbarDropdown">
        <!-- ADDED CLASS -->
        <a class="dropdown-item" href="#">Action</a>
        <a class="dropdown-item" href="#">Another action</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" href="#">Something else here</a>
      </div>

    </li>
  </ul>
</nav>
0 голосов
/ 05 сентября 2018

Вам нужно использовать dropdown-menu-right в выпадающем меню, если вы хотите, чтобы пункты меню были правильно выровнены.

Что непонятно, так это то, почему вы используете переключатель, потому что у вас нет складных пунктов меню (navbar-collapse). Просто удалите переключатель и используйте navbar-expand, чтобы Navbar не сворачивался в мобильном представлении.

<nav class="navbar navbar-expand navbar-light fixed-top" style="background-color: #FFFFFF;">
    <a class="navbar-brand mx-auto" href="#">My Brand</a>
    <ul class="nav navbar-nav">
        <li class="dropdown">
            <a href="#" class="nav-link dropdown-toggle" id="navbarDropdown" data-toggle="dropdown" aria-expanded="false"> 
                Welcome, User <b class="caret"></b>
            </a>
            <div class="dropdown-menu dropdown-menu-right">
                <a class="dropdown-item" href="#">Action</a>
                <a class="dropdown-item" href="#">Another action</a>
                <div class="dropdown-divider"></div>
                <a class="dropdown-item" href="#">Something else here</a>
            </div>
        </li>
    </ul>
</nav>

https://www.codeply.com/go/j1HZLEdyrC

Раскрывающийся список всегда будет открываться внутри свернутого мобильного телефона Navbar, который является собственно дизайном. Если вы хотите сохранить мобильный переключатель и собираетесь добавить складные элементы, вы можете использовать position-absolute на dropdown-menu, чтобы переопределить поведение по умолчанию.

<nav class="navbar navbar-expand-md navbar-light" style="background-color: #FFFFFF;">
    <button class="navbar-toggler navbar-nav mr-auto" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span> 
    </button>
    <a class="navbar-brand mx-auto" href="#">My Brand</a>
    <ul class="nav navbar-nav">
        <li class="dropdown">
            <a href="#" class="nav-link dropdown-toggle" id="navbarDropdown" data-toggle="dropdown" aria-expanded="false"> 
                Welcome, User <b class="caret"></b>
            </a>
            <div class="dropdown-menu dropdown-menu-right position-absolute" aria-labelledby="navbarDropdown">
                <a class="dropdown-item" href="#">Action</a>
                <a class="dropdown-item" href="#">Another action</a>
                <div class="dropdown-divider"></div>
                <a class="dropdown-item" href="#">Something else here</a>
            </div>
        </li>
    </ul>
</nav>

Демонстрация обоих вариантов: https://www.codeply.com/go/j1HZLEdyrC


Похожие: Bootstrap 4 Элементы выпадающего меню Navbar справа

...