В настоящее время .dropdown
отображается с относительным позиционированием, в то время как .dropdown-menu
отображается с абсолютным позиционированием с top: 100%;
, так что меню отображается прямо под раскрывающимся раскрывающимся списком.
Если вы хотите иметь раскрывающееся меню на всю ширину, первое, что вам нужно изменить, это позиционирование .dropdown
. Вы можете сбросить его так, чтобы раскрывающееся меню больше не располагалось абсолютно по отношению к его родителю, .dropdown
, а из любого следующего, имеющего относительное расположение. В твоем случае это контейнер!
Поскольку .dropdown-menu
по-прежнему отображается как абсолютное значение, вы можете легко сделать его в виде полной ширины, независимо от его относительного родителя, установив его left: 0;
и right: 0;
.
Я не хочу связываться со стилем Bootstrap по умолчанию. Поэтому я представлю новый пользовательский класс CSS под названием .mega-menu
и добавлю его в .dropdown
.
Компоновка
<header>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<button class="navbar-toggler" />
<div class="container position-relative">
<div class="collapse navbar-collapse">
<ul class="navbar-nav">
<li class="nav-item dropdown show mega-menu">
<a class="dropdown-toggler" />
<div class="dropdown-menu">
<a class="dropdown-item" />
...
</div>
</li>
<li class="nav-item dropdown mega-menu" />
<li class="nav-item dropdown" />
...
</ul>
</div>
</div>
</nav>
</header>
CSS
.dropdown.mega-menu {
position: static;
}
.dropdown.mega-menu .dropdown-menu {
left: 0;
right: 0;
}
Результат
демо: https://jsfiddle.net/davidliang2008/pL9jc7vt/13/