gpt4 book ai didi

jquery - Bootstrap 4 导航栏有两行,底行可折叠

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:52 25 4
gpt4 key购买 nike

我希望 2 个导航栏显示在两个单独的行中,所有链接(可折叠元素)都在底部,标题和切换按钮在顶行。

像这样:

------------------------------------------------------
ONE_________BIG_________TITLE [Toggle]
------------------------------------------------------
Nav items Icon Links Forms ...
------------------------------------------------------

顶行将在移动设备和桌面设备中展开,但切换按钮应在桌面设备上隐藏。底行将在桌面设备上展开并在移动设备上折叠。

我能够在 bootstrap 3 中做到这一点,方法是将所有内容包装在一个 div.navbar 中,并使用 display:table 来定位和垂直对齐 Logo /标题并在彼此旁边切换。

仅在桌面设备中,滚动后,我希望底行固定在顶部。我曾经在 bootstrap 3 中使用词缀来实现这一点,我有什么想法可以用新版本做到这一点吗?

同样在移动设备中,未折叠的顶行应固定在顶部。

这是我的 bootstrap 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 在评论中建议的代码。因为“navbar-collapse”和“collapse”应用于导航栏内的div,所以当导航栏折叠时总是有灰色边框。

我不知道如何在不破坏样式的情况下将它应用到父导航...

/* 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 解决方案。

分割:

  • 我们使用了两个 .navbar,一个在另一个下面。两者都具有相同的 .navbar-expand-{breakpoint} 类,在本例中为 .navbar-expand-lg
  • 标题位于 .ml-auto .mr-auto 的中心类。这使得切换器按钮在右边缘完好无损。
  • 为了消除底部导航栏折叠时的边框(由底部导航栏的填充引起),.py-0 引入到导航栏本身,.my -2 被添加到 .navbar-collapse 以重新获得 spacing .
  • 最后,申请 .sticky-top到两个导航栏。因此,当只有顶部导航栏可见时,它将固定在顶部,但是当底部导航栏也可见时,它将固定在顶部而不是顶部导航栏。

#content {
height: 200vh;
}
<nav id="topnavrow" class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top">
<a class="navbar-brand ml-auto mr-auto" href="#">_________TITLE_________</a>

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

<nav class="navbar navbar-expand-lg navbar-light bg-light py-0 sticky-top">
<div id="navcollapse" class="collapse navbar-collapse my-2">
<div class="navbar-nav">
<a class="nav-item nav-link active" href="#">Item 1</a>
<a class="nav-item nav-link" href="#">Item 2</a>
<a class="nav-item nav-link" href="#">Item 3</a>
<a class="nav-item nav-link" href="#">Item 4</a>
</div>
</div>
</nav>

<section id="content">
[page content]
</section>


<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<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>

关于jquery - Bootstrap 4 导航栏有两行,底行可折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48475539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com