具有非全角下拉菜单的Bootstrap4固定顶部全角导航栏

时间:2019-01-24 23:05:55

标签: drop-down-menu bootstrap-4 alignment

我有一个导航栏,该菜单栏的中心对齐菜单项,其中一些是下拉菜单。导航栏和下拉菜单的宽度为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的宽度会按预期减小下拉菜单面板,但会阻止其居中对齐。

提前谢谢

desired layout

2 个答案:

答案 0 :(得分:0)

我设法达到了您的目标(如果我理解正确的话),主要是将下一种样式应用于dropdown-menu,但仅在特定的引导断点(LG)上删除了所有风格:

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

此外,我删除了外部的rowcol-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>

答案 1 :(得分:0)

以@Shidersz方法为基础,我想要一个带有列的全角居中导航栏。我使用了bootstrap 4,并添加了一个custom-dropdown类。这需要将导航栏固定在顶部或滚动没有预期的行为。

    .custom-dropdown {
       position: fixed !important;
       width: 100vw;
       left: 0vw !important;
       top: 50px !important;
    }



<nav class="navbar fixed-top navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-5">
    <div class="container">
      <a class="navbar-brand">Full Width Awesomness</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
        <ul class="navbar-nav flex-grow-1">
          <li class="nav-item">
            <a class="nav-link text-dark">Top Sellers</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">
              Products
            </a>
            <div class="dropdown-menu custom-dropdown border-0 border-bottom text-center" aria-labelledby="navbarDropdown">
              <div class="row">
                <div class="col-sm-3">
                  <label class="font-weight-bold">Item 1 </label>
                  <a class="dropdown-item" href="#">Top Sellers</a>
                  <a class="dropdown-item" href="#">Hot and New</a>
                  <a class="dropdown-item" href="#">Link 3</a>
                </div>
                <div class="col-sm-3">
                  <label>DVDs </label>
                  <a class="dropdown-item" href="#">Link 1</a>
                  <a class="dropdown-item" href="#">Link 2</a>
                  <a class="dropdown-item" href="#">Link 3</a>
                </div>
                <div class="col-sm-3">
                  <label>Books </label>
                  <a class="dropdown-item" href="#">Link 1</a>
                  <a class="dropdown-item" href="#">Link 2</a>
                  <a class="dropdown-item" href="#">Link 3</a>
                </div>
                <div class="col-sm-3">
                  <label>CDs </label>
                  <a class="dropdown-item" href="#">Link 1</a>
                  <a class="dropdown-item" href="#">Link 2</a>
                  <a class="dropdown-item" href="#">Link 3</a>
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </nav>
  <div class="container-fluid  mt-2 pt-5">
    <div class="row" style="background-color: pink; height:800px;">
      CONTENT
    </div>
  </div>

在这里拨弄: https://jsfiddle.net/mgervasoni/71c0yub4/24/