Bulma navbar открывает выпадающее меню в navbar. Как мне открыть его вне navbar?
Я разрабатываю веб-сайт на Angular 4. Я решил использовать CSS-фреймворк Bulma ранее в процессе разработки, потому что мне понравился дизайн. В Bulma нет встроенных компонентов для выпадающих меню, поэтому я добавил NgBootstrap после неудачной попытки создать свой собственный.
Моя проблема в том, что встроенная навигационная панель Bulma открывает меню внутри навигационной панели и отображает ее с помощью вертикальной полосы прокрутки. Как оформить навигационную панель или меню, чтобы они открывались вне навигационной панели?
Вот сайт развернутый на героку для просмотра. Тест - это ngbootstrap, остальные построены с помощью скретч-меню. http://atozinsurance.herokuapp.com/
Вот мой HTML-код для компонента nav.
<nav class="nav has-shadow">
<div class="nav-left">
<a href="tel:+1-888-721-2511" class="nav-item" id="callNumber"><span class="fa fa-phone"></span>1-888-721-2511</a>
<a class="nav-item">
Ayuda en Español
</a>
<!--<a class="nav-item">-->
<!--Companies We Offer-->
<!--</a>-->
</div>
<div class="nav-center">
<a class="nav-item" id="brand" routerLink="/">
<img src="../../assets/a-z-logo.jpg" alt="A to Z Insurance logo">
</a>
</div>
<span class="nav-toggle" (click)="toggleActive()" [ngClass]="{'is-active': isActive}">
<span></span>
<span></span>
<span></span>
</span>
<div class="nav-right nav-menu" [ngClass]="{'is-active': isActive}">
<a class="nav-item" (click)="toggleMobile('product')">
<a class="menuTitle">Products</a>
<aside class="menu insuranceMenu">
<ul id="products" class="menu-list">
<li><a routerLink="/auto-insurance"><p>Auto</p></a></li>
<li><a routerLink="/home-insurance"><p>Home</p></a></li>
<li><a routerLink="/life-insurance"><p>Life</p></a></li>
<li><a routerLink="/health-insurance"><p>Health</p></a></li>
<li><a routerLink="/financial-services">Financial</a></li>
<li><a routerLink="/commercial-insurance"><p>Commercial</p></a></li>
<li><a routerLink="/more-insurances"><p>More</p></a></li>
</ul>
</aside>
</a>
<div class="nav-item" id="mobileProductNav" [ngStyle]="{'display': mProductOpen ? 'block': 'none'}">
<ul>
<li><a routerLink="/auto-insurance">Auto</a></li>
<li><a routerLink="/home-insurance">Home</a></li>
<li><a routerLink="/life-insurance">Life</a></li>
<li><a routerLink="/health-insurance">Health</a></li>
<li><a routerLink="/financial-services">Financial</a></li>
<li><a routerLink="/commercial-insurance">Commercial</a></li>
<li><a routerLink="/more-insurances"><p>More</p></a></li>
</ul>
</div>
<div ngbDropdown class="nav-item">
<div ngbDropdownToggle id="dropDown1">Test</div>
<div class="dropdown-menu" aria-labelledby="dropDown1">
<button class="dropdown-item">Test item</button>
<button class="dropdown-item">Test item</button>
<button class="dropdown-item">Test item</button>
<button class="dropdown-item">Test item</button>
</div>
</div>
<a class="nav-item" id="financeTab" (click)="toggleMobile('finance')">
<a class="menuTitle">Business</a>
<aside class="menu financeMenu">
<ul id="financial" class="menu-list">
<li><a routerLink="/business-ein">EIN</a></li>
<li><a routerLink="/business-llc">LLC</a></li>
<li><a routerLink="/business-cards">Cards</a></li>
<li><a routerLink="/business-s-corp">S-Corp</a></li>
<li><a routerLink="/business-license">License</a></li>
<li><a routerLink="/business-branding">Branding</a></li>
</ul>
</aside>
</a>
<div class="nav-item" id="mobileFinanceNav" [ngStyle]="{'display': mFinanceOpen ? 'block': 'none'}">
<ul>
<li><a routerLink="/business-ein">EIN</a></li>
<li><a routerLink="/business-llc">LLC</a></li>
<li><a routerLink="/business-cards">Cards</a></li>
<li><a routerLink="/business-s-corp">S-Corp</a></li>
<li><a routerLink="/business-license">License</a></li>
<li><a routerLink="/business-branding">Branding</a></li>
</ul>
</div>
<a class="nav-item" id="aboutTab" (click)="toggleMobile('about')">
<a class="menuTitle">About</a>
<aside class="menu aboutMenu">
<ul id="about" class="menu-list">
<li><a routerLink="/about">A to Z</a></li>
<li><a routerLink="/blog">Blog</a></li>
<li><a routerLink="/contact">Contact</a></li>
<li><a routerLink="/locations">Location</a></li>
</ul>
</aside>
</a>
<div class="nav-item" id="mobileAboutNav" [ngStyle]="{'display': mAboutOpen ? 'block': 'none'}">
<ul>
<li><a routerLink="/about">A to Z</a></li>
<li><a routerLink="/blog">Blog</a></li>
<li><a routerLink="/contact">Contact</a></li>
<li><a routerLink="/location">Location</a></li>
</ul>
</div>
</div>
</nav>
Вот мой CSS, включая мои неудачные попытки сделать выпадающий выпадающий список с нуля мобильным.
.nav {
position: fixed;
width: 100%;
max-height: none!important;
overflow-x: visible!important;
}
.nav-item {
max-height: none!important;
overflow-x: hidden!important;
}
.nav-right {
max-height: none!important;
overflow-x: hidden!important;
}
.nav-right {
margin-right: 20px;
}
#callNumber {
background-color: #252161;
color: white;
font-weight: bold;
font-style: italic!important;
}
ul.nav-item li a {
position: absolute;
}
ul.nav-item li a p {
font-size: 13px!important;
}
.nav a:hover {
background-color: #252161;
color: white;
}
#brand:hover {
background-color: white!important;
}
.dropdown-menu {
position: absolute;
background-color: white;
}
.d-inline-block {
position: absolute;
}
aside.menu {
width: 120px;
z-index: 1000;
position: fixed;
background-color: white;
color: #252161;
top: 52px;
display: none;
transition: display 500ms ease;
}
@media (min-width: 769px) {
.viewNav {
display: none!important;
}
#mobileProductNav {
display: none!important;
}
#mobileFinanceNav {
display: none!important;
}
#mobileAboutNav {
display: none!important;
}
}
@media (max-width: 768px) {
a.nav-item:hover > aside.menu {
display: none!important;
}
}
aside ul li a:hover {
color: white!important;
background-color: #252161!important;
}
a.nav-item:hover > aside.menu {
display: block;
}
a.nav-item.accordion:after {
content: '\02795'; /* Unicode character for "plus" sign (+) */
font-size: 13px;
color: #777;
float: right;
margin-left: 5px;
}
.viewNav {
transition: max-height 5s ease-in!important;
max-height: 400px!important;
height: 100%!important;
display: block!important;
}
a.accordion.active:after {
content: "\2796"; /* Unicode character for "minus" sign (-) */
}
.insuranceMenu {
display: none;
}
.aboutMenu {
display: none;
width: 115px!important;
}
.financeMenu {
display: none;
width: 160px!important;
}
@media (max-width: 1425px) {
aside.menu {
left: 89%;
}
aside.menu.aboutMenu {
left: 92.5%;
}
aside.menu.financeMenu {
left: 82%;
}
}
@media (max-width: 1375px) {
aside.menu {
left: 81%;
}
}
@media (max-width: 1350px) {
aside.menu {
left: 80%;
}
aside.menu.financeMenu {
left: 81%;
}
}
@media (max-width: 1325px) {
aside.menu {
left: 79%;
}
aside.menu.financeMenu {
left: 80%;
}
}
@media (max-width: 1300px) {
aside.menu {
left: 78%;
}
}
@media (max-width: 1275px) {
aside.menu {
left: 77%;
}
aside.menu.financeMenu {
left: 80%;
}
}
@media (max-width: 1250px) {
aside.menu {
left: 76.5%;
}
aside.menu.financeMenu {
left: 79.5%;
}
}
@media (max-width: 1225px) {
aside.menu {
left: 76%;
}
aside.menu.financeMenu {
left: 79%;
}
}
@media (max-width: 1200px) {
aside.menu {
left: 75.5%;
}
aside.menu.financeMenu {
left: 78.5%;
}
}
@media (max-width: 1175px) {
aside.menu {
left: 75%;
}
aside.menu.financeMenu {
left: 78%;
}
}
@media (max-width: 1150px) {
aside.menu {
left: 74%;
}
aside.menu.financeMenu {
left: 77.5%;
}
}
@media (max-width: 1125px) {
aside.menu {
left: 73%;
}
aside.menu.aboutMenu {
left: 91.5%;
}
aside.menu.financeMenu {
left: 77%;
}
}
@media (max-width: 1100px) {
aside.menu {
left: 72%;
}
aside.menu.financeMenu {
left: 76.5%;
}
}
@media (max-width: 1075px) {
aside.menu {
left: 71%;
}
aside.menu.financeMenu {
left: 76%;
}
}
@media (max-width: 1025px) {
aside.menu {
left: 70%;
}
aside.menu.financeMenu {
left: 75.5%;
}
}
@media (max-width: 1025px) {
aside.menu {
left: 69%;
}
aside.menu.aboutMenu {
left: 90.5%;
}
aside.menu.financeMenu {
left: 75%;
}
}
@media (max-width: 1000px) {
aside.menu {
left: 68%;
}
aside.menu.financeMenu {
left: 79%;
}
}
@media (max-width: 975px) {
aside.menu {
left: 67%;
}
aside.menu.financeMenu {
left: 75%;
}
}
@media (max-width: 925px) {
aside.menu {
left: 64.5%;
}
aside.menu.financeMenu {
left: 73%;
}
}
@media (max-width: 875px) {
aside.menu {
left: 65.5%;
}
aside.menu.aboutMenu {
left: 89%;
}
aside.menu.financeMenu {
left: 71%;
}
}
@media (max-width: 865px) {
aside.menu {
left: 65.5%;
}
aside.menu.financeMenu {
left: 71%;
}
}
@media (max-width: 850px) {
aside.menu {
left: 63%;
}
aside.menu.financeMenu {
left: 72%;
}
}
@media (max-width: 840px) {
aside.menu {
left: 64%;
}
aside.menu.financeMenu {
left: 71%;
}
}
@media (max-width: 825px) {
aside.menu {
left: 65%;
}
aside.menu.financeMenu {
left: 74%;
}
}
@media (max-width: 820px) {
aside.menu {
left: 65%;
}
aside.menu.financeMenu {
left: 75%;
}
}
@media (max-width: 810px) {
aside.menu {
left: 67%;
}
aside.menu.financeMenu {
left: 76%;
}
}
@media (max-width: 780px) {
aside.menu {
left: 67%;
}
aside.menu.financeMenu {
left: 78%;
}
}
@media (max-width: 768px) {
aside.menu {
display: none!important;
}
.nav-item a.menuTitle::after {
content: '\02795'; /* Unicode character for "plus" sign (+) */
font-size: 13px;
color: #7a7a7a;
float: right;
margin-left: 5px;
}
.nav-left {
display: none;
}
.nav-right {
margin-right: 0;
}
}
1 ответ
Я проверил, что если я сделаю два изменения, это работает. Попробуй сам:
.nav-right.nav-menu {
overflow-y: visible;
}
.nav-item[_ngcontent-c1], .nav-right[_ngcontent-c1] {
overflow-x: visible !important;
}
Надеюсь, поможет!