响应式的Bootstrap 4导航栏下拉菜单显示为导航项

4

你好,非常感谢您的帮助。以下是有关该站点的链接:caulfield.co/test/originals.html

我正在尝试创建一个响应式 navbar,其中当前的dropdown-items在折叠后显示为标准的nav-items

请参见此图片:

Dropdown displaying correctly on desktop view

在桌面上,dropdown-items正如预期地显示。但在移动设备上,单独的下拉菜单是不必要的。以下是 Bootstrap 4 的默认显示方式:

Minimized Mobile navbar with unnecessary dropdown

是否有方便或自定义的解决方案,能够在移动设备上使用 navbar-collapse 时删除 dropdown,从而使得 dropdown-items 就像navbar-items一样?理想情况下,“更多”nav-link将被隐藏,nav-items 将平滑地从“联系人”继续到“作品展示”。

HTML:

<nav id="navHome" class="navbar navbar-expand-lg navbar-light sticky-top">
  <div class="container-fluid max-width-940">
  <a class="navbar-brand" href="index.html">
    <img src="images/mb.svg" alt="Margaret Biggs" width="220px"/>
  </a>
  <button class="navbar-toggler togglerNoBorder" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse backgroundWhite" id="navbarNavDropdown">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item active">
        <a class="nav-link" href="bio.html">Bio <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="originals.html">Originals</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="exhibition.html">Exhibition</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="prints.html">Prints</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="professionals.html">For Professionals</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="contact.html">Contact</a>
      </li>
      <li class="nav-item dropdown navDropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          More
        </a>
        <div class="dropdown-menu navDropdown" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="works-on-display.html">Works on Display</a>
          <a class="dropdown-item" href="poetry.html">Poetry</a>
          <a class="dropdown-item" href="commissions.html">Commissions</a>
          <a class="dropdown-item" href="blog.html">Blog</a>
        </div>
      </li>
    </ul>
  </div>
</div>
</nav>

CSS:

.navbar-right {
  float:right;
}

.togglerNoBorder{
  border: 0px solid transparent;
}

.nav940{
  max-width:940px;
  margin:0 auto;
}

#navHome {
  color:rgb(34, 34, 34);
  font-size:13px;
  font-weight:400;
  line-height:16px;
  text-transform:uppercase;
  background-color:white;
  height:60px;
  box-shadow: 0 0 18px -4px #000;
}

#navHome a{
  color:rgb(34, 34, 34);
}

#navHome a:hover{
  color:#165fa5;
}

.navDropdown {
  font-size:13px;
}

.navDropdown a:hover {
  background-color:white;
}

.backgroundWhite{
  background-color:white;
}

.nav-item{
  padding-left:10px;
}

.dropdown-item {
  padding-top:10px;
}

.navbar-brand {
  margin-bottom:3px;
}

.dropdown-menu {
  top:45px;
}
2个回答

5
使用@media查询针对移动设备(<992px)将dropdown-menu显示为普通的导航链接...
@media (max-width: 992px) {
    .dropdown-toggle {
        display: none;
    }

    .dropdown-menu {
        display: block;
        position: relative;
        border-width: 0;
        padding: 0;
        margin: 0;
    }

    .dropdown-item {
        padding: .5rem 0rem;
        color: rgba(0,0,0,.5);
    }
}

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


0

基于@Zim的出色答案,我稍微修改了样式以适应黑色导航栏中的并排显示。在Bootstrap 5上进行了测试,但我想它也应该适用于Bootstrap 4。

@media (max-width: 992px) {
.dropdown-toggle {
    display: none;
}

.dropdown-menu {
    position: relative;
    display: contents;
    border-width: 0;
    padding: 0;
    margin: 0;
    color: transparent;
}

.dropdown-item {
    color: white;
    background-color: black;
    display: inline;
}

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接