【发布时间】:2019-03-07 12:04:06
【问题描述】:
请注意,我不是在问如何对齐导航菜单中的项目(左或右),而是如何将项目从导航栏动态移动到下拉菜单。
我在我的项目中使用 Bootstrap 4.1。我的顶部主菜单包含许多链接。最后一项是包含附加链接的下拉列表:
我希望在调整窗口大小时,将标题中没有足够空间的正确项目移动到下拉项目中。
但是在调整大小时,项目正在缩小。然后,对于“md”(和更小的)断点,默认导航栏功能被激活:
使用 flexbox 的解决方案也是可以接受的。 使用默认 Bootstrap 导航栏链接到简单演示:CodePen
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" 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" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu item 4</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu item 5</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu item 6</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu item 7</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu item 8</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown Menu
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Menu item 9</a>
<a class="dropdown-item" href="#">Menu item 10</a>
<a class="dropdown-item" href="#">About</a>
<a class="dropdown-item" href="#">Help</a>
<a class="dropdown-item" href="#">Sign out</a>
</div>
</li>
</ul>
</div>
</nav>
谢谢!
编辑:
这是我目前正在使用的窗口的调整大小功能:
let addMenu = $("#navbarNavDropdown > ul >li.dropdown"),
addMenuList = addMenu.children("ul"),
menuItems = $("#navbarNavDropdown > ul > li:visible:not('.dropdown')");
function _resize() {
var itemsWidth = 0,
startWrap = false,
navWidth = $("#navbarNavDropdown").width() - addMenu.width();
menuItems.each(function () {
if (startWrap == false) {
if (itemsWidth + $(this).width() < navWidth) {
itemsWidth += $(this).width();
}
else {
startWrap = true;
addMenuList.prepend(this);
}
}
else {
addMenuList.prepend(this);
}
});
}
window.onresize = _resize;
上面的链接也更新了。
在缩小屏幕时有效,但我需要实现:
- 增加屏幕宽度时;
- 在“md”(或更小)断点中,使用默认引导程序的功能
【问题讨论】:
-
@Zim,我看到您已将问题标记为“重复”,但我不是在问如何对齐导航菜单中的项目(左或右),而是如何从导航栏到下拉菜单。
-
帖子已经用简单的代码更新了。
标签: jquery css twitter-bootstrap flexbox bootstrap-4