【发布时间】:2018-07-06 15:07:37
【问题描述】:
我希望 2 个导航栏出现在两个单独的行中,所有链接(可折叠项)都在底部,而标题和切换按钮在顶行。
像这样:
------------------------------------------------------
ONE_________BIG_________TITLE [Toggle]
------------------------------------------------------
Nav items Icon Links Forms ...
------------------------------------------------------
顶行将在移动设备和桌面设备中展开,但切换按钮应在桌面设备上隐藏。底行将在桌面设备上展开,在移动设备上折叠。
我可以在 bootstrap 3 中做到这一点,方法是将所有内容包装在一个 div.navbar 中,并使用 display:table 来定位和垂直对齐徽标/标题,并在彼此旁边切换。
仅在桌面设备中,滚动后,我希望将底行固定到顶部。我曾经在 bootstrap 3 中使用词缀来实现这一点,有什么想法可以用新版本做到这一点吗?
此外,在移动设备中,未折叠的顶行应固定在顶部。
这是我的引导程序 3 代码:
#navcollapse {
top: 0;
width: 100%;
z-index: 10050;
}
@media (max-width: 767px) {
#navcollapse {
position: static;
}
}
#topnavrow.affix {
top: 0;
width: 100%;
z-index: 10050;
}
@media (min-width: 768px) {
#topnavrow.affix {
position: static;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="navbar" data-offset-top="0" data-spy="affix" id="topnavrow">
<div class="container" style="display:table;">
<div style="display:table-cell;vertical-align:middle;">
<a href="#" title="">
_________TITLE_________
</a>
</div>
<div style="display:table-cell;vertical-align:middle;">
<button aria-expanded="false" class="navbar-toggle collapsed" data-target="#navcollapse" data-toggle="collapse" type="button">
Toggle
</button>
</div>
</div>
<nav class="collapse navbar-collapse container-fluid navbar-default" data-offset-top="100" data-spy="affix" id="navcollapse" style="max-width:100%;min-width:100%;">
<div class="container">
<ul class="nav navbar-nav">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
</ul>
</div>
</nav>
</div>
这是 @ZimSystem 在 cmets 中建议的代码。因为“navbar-collapse”和“collapse”应用于navbar内部的一个div,所以navbar折叠时总是有灰色边框。
我不知道如何在不破坏样式的情况下将其应用于父导航...
/* only affix the top navbar on mobile */
@media (max-width: 768px) {
.fixed-top-sm {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 1030;
}
body {
padding-top: 44px;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-md fixed-top-sm justify-content-start flex-nowrap bg-light navbar-light">
<a href="/" class="navbar-brand">Top</a>
<button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#navbar2">
<span class="navbar-toggler-icon"></span>
</button>
</nav>
<nav class="navbar navbar-expand-md bg-dark navbar-dark">
<div class="navbar-collapse collapse pt-2 pt-md-0" id="navbar2">
<ul class="navbar-nav">
<li class=""><a class="nav-link" href="#">Link 2</a></li>
</ul>
</div>
</nav>
【问题讨论】:
-
要使其按照您在此处描述的方式单独使用本机 Bootstrap 4 类工作,导航栏链接必须在 HTML 中复制。这可以接受吗?
-
为什么?顶行不一定是“导航栏”,但它仍然可以切换外部内容(底行,导航栏),我的问题是我无法让桌面的切换按钮消失,导航栏也没有折叠时完全隐藏,它会留下一个小边框,因为折叠应用于导航栏内的 div,而不是导航栏本身...
-
使切换器消失不是问题。问题是你有一个非常非标准的设置,而 Bootstrap 4 不是为此而设计的。但我认为你应该在这里发布你当前的代码。 (这可能是有人已经投反对票的原因,您发布了一个没有您当前代码的问题,这对于此类问题是一个很大的禁忌)
-
发布您到目前为止尝试过的代码。这个example may help.
-
我在上面添加了我的 bootstrap 3 代码。我没有 bootstrap 4 的工作代码。
标签: jquery css twitter-bootstrap bootstrap-4 navbar