Bootstrap4 панель навигации с полной шириной с фиксированным верхом и раскрывающимся меню с неполной шириной - PullRequest
0 голосов
/ 25 января 2019

У меня есть панель навигации с выровненными по центру пунктами меню, некоторые из которых являются выпадающими меню.Панель навигации и раскрывающееся меню имеют ширину 100%, но я бы хотел, чтобы раскрывающееся меню имело ширину 60% и выравнивалось по центру.

HTML:

<div class="container">
  <div class="row">
    <div class="col-12">
      <nav class="navbar fixed-top navbar-expand-lg navbar-dark" style="background-color: #8B0000;">
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent2" aria-controls="navbarSupportedContent2" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent2">
          <ul class="navbar-nav mx-auto">
            <li class="nav-item dropdown megamenu-li">
              <a href="#" class="nav-link  dropdown-toggle" aria-haspopup="true" id="navitem-1" data-toggle="dropdown">
                  Drop down
                </a>
              <div class="dropdown-menu megamenu" aria-labelledby="navitem-1">
                <div class="row">
                  <div class="col-sm-6 col-lg-3">
                    <a class="dropdown-item" href="#">Item</a>
                    <a class="dropdown-item" href="#">Item</a>
                  </div>
                  <div class="col-sm-6 col-lg-3">
                    <a class="dropdown-item" href="#">Item</a>
                    <a class="dropdown-item" href="#">Item</a>
                  </div>
                </div>
              </div>
            </li>
            <li class="nav-item">
              <a href="#" class="nav-link">
                  Item
                </a>
            </li>
            <li class="nav-item">
              <a href="#" class="nav-link">
                  Item
                </a>
            </li>

          </ul>
        </div>
      </nav>
    </div>
  </div>
</div>

CSS:

.megamenu-li {
  position: static;
}

.megamenu {
  position: absolute;
  width: 100%;
  left: 0;
  right: 0;
  padding: 15px;
}

См. Демо здесь: https://jsfiddle.net/stackoverflow123/53fn2kop/

Уменьшение ширины .megamenu уменьшает ожидаемую панель меню нисходящего потока, но останавливает ее выравнивание по центру.

Заранее спасибо

желаемый макет

1 Ответ

0 голосов
/ 25 января 2019

Мне удалось приблизиться к вашей цели (если я правильно понял), применяя в основном следующий стиль к dropdown-menu, но только на конкретной точке останова начальной загрузки (LG) и удаляя весь ваш стиль:

.custom-dropdown {
    position: fixed !important;
    width: 60vw;
    left: 20vw !important;
    top: 45px !important;
}

Кроме того, я удалил внешние row и col-12 и заменил container на container-fluid и внес некоторые незначительные изменения в элементы на dropdown-menu, чтобы они выглядели по центру. Вы можете проверить это ниже:

@media (min-width: 992px)
{
    .custom-dropdown {
        position: fixed !important;
        width: 60vw;
        left: 20vw !important;
        top: 45px !important;
    }
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>

<div class="container-fluid">

  <nav class="navbar fixed-top navbar-expand-lg navbar-dark" style="background-color: #8B0000;">

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

    <div class="collapse navbar-collapse" id="navbarSupportedContent2">
      <ul class="navbar-nav mx-auto">
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" aria-haspopup="true" id="navitem-1" data-toggle="dropdown">
            Drop down
          </a>
          <div class="dropdown-menu custom-dropdown" aria-labelledby="navitem-1">
            <div class="row">
              <div class="col-6 text-center">
                <a class="dropdown-item" href="#">Item</a>
                <a class="dropdown-item" href="#">Item</a>
              </div>
              <div class="col-6 text-center">
                <a class="dropdown-item" href="#">Item</a>
                <a class="dropdown-item" href="#">Item</a>
              </div>
            </div>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" aria-haspopup="true" id="navitem-2" data-toggle="dropdown">
            Drop down 2
          </a>
          <div class="dropdown-menu custom-dropdown" aria-labelledby="navitem-2">
            <div class="row">
              <div class="col-6 text-center">
                <a class="dropdown-item" href="#">Item</a>
                <a class="dropdown-item" href="#">Item</a>
              </div>
              <div class="col-6 text-center">
                <a class="dropdown-item" href="#">Item</a>
                <a class="dropdown-item" href="#">Item</a>
              </div>
            </div>
          </div>
        </li>
        <li class="nav-item">
          <a href="#" class="nav-link">Item</a>
        </li>
        <li class="nav-item">
          <a href="#" class="nav-link">Item</a>
        </li>
        <li class="nav-item">
          <a href="#" class="nav-link">Item 333</a>
        </li>
        <li class="nav-item">
          <a href="#" class="nav-link">Item 99999</a>
        </li>
      </ul>
    </div>

  </nav>
</div>
...