Ga naar inhoud

Bootstrap header met nav volledig mobiel

HTML

<header id=”my-header” class=””>
<nav class=”navbar navbar-expand-lg”>
<a class=”navbar-brand” href=<?php echo get_site_url(); ?>”>
<?php $custom_logo_id = get_theme_mod( ‘custom_logo’ );
$logo = wp_get_attachment_image_src( $custom_logo_id , ‘full’ );
if ( has_custom_logo() ) {
echo ‘<img src=”‘ . esc_url( $logo[0] ) . ‘” alt=”‘ . get_bloginfo( ‘name’ ) . ‘”>’;
} else {
echo ‘<h1>’ . get_bloginfo(‘name’) . ‘</h1>’;
}?>
</a>
<div class=”header-menu”>
<button class=”navbar-toggler” type=”button” data-bs-toggle=”collapse” data-bs-target=”#collapsibleNavbar” aria-controls=”collapsibleNavbar” aria-expanded=”false”>
<div class=”navbar-toggler-icon”><span></span><span></span><span></span></div>
</button>
<div class=”collapse navbar-collapse header-collapse” id=”collapsibleNavbar”>
<div class=”collapse-screen”>
<button class=”navbar-toggler toggle-inside” type=”button” data-bs-toggle=”collapse” data-bs-target=”#collapsibleNavbar” aria-controls=”collapsibleNavbar” aria-expanded=”false”>
<div class=”navbar-toggler-icon”></div>
</button>
<div class=”collapsed-nav-wrap”>
<?php wp_nav_menu(array(’theme_location’ => ‘hoofdmenu’,’depth’ => 2,’container’ => false,’menu_class’ => ‘nav navbar-nav navbar-right’,’walker’ => new wp_bootstrap_navwalker())); ?>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class=”h-whtsp home-intro”></div>

CSS

/*HEADER*/
header{
position:fixed;
width:100%;
z-index:100;
}
/*fillspace to prevent content from getting under the header when on top of page /
witruimte om te voorkomen dat content onder de header valt*/
.h-whtsp{
height:60px;
}
/*NAVBAR*/
nav{
position:fixed;
width:100%;
background-color:black;
z-index:1000;
}
nav.navbar{
position:relative;
justify-content:space-between;
}
/*navbar logo*/
nav .navbar-brand img{
width:165px;
}
/*mobile menu / responsive menu / tablet menu*/
/*hamburger icon menu toggler / hamburger icoon menu toggler*/
nav .navbar-toggler-icon span{
display:grid;
height:2px;
margin:5px 2px;
right:0px;
border-radius:5px;
background-color: red;
}
/*inside menu toggler / Binneste menu toggler*/
nav .collapse .toggle-inside .navbar-toggler-icon{
position: relative;
display: flex;
height: 30px;
width: 30px;
flex-direction: column;
justify-content: center;
}
/*inside menu toggler close button objects / binneste menu toggler dichtdoen knop objecten*/
nav .collapse .toggle-inside .navbar-toggler-icon::before,
nav .collapse .toggle-inside .navbar-toggler-icon::after{
content: ”;
position: absolute;
height: 2px;
width: 100%;
background-color: red;
}
/*rotate object to get the X shape / roteer object om de X vorm te krijgen*/
nav .collapse .toggle-inside .navbar-toggler-icon::before{
transform: rotate(45deg);
}
nav .collapse .toggle-inside .navbar-toggler-icon::after{
transform: rotate(-45deg);
}
/*inside toggler placement / binneste toggle plaatsing*/
nav .header-menu .header-collapse .toggle-inside{
position:absolute;
top:20px;
right:16px;
z-index:1050;
}
/*the open menu area for mobiel. it’s why it fills the whole screen / uitgeklapte menu mobiel. dit is waarom het de gehele scherm vult*/
nav .header-menu .header-collapse{
position:fixed;
height:100%;
width:100%;
top:0;
right:0;
left:0;
bottom:0;
object-fit: fill;
flex:1;
background-color:black;
z-index:1000;
}
/*turn off cluncky transition / zet onhandige transitie uit */
nav .header-menu .header-collapse.collapsing{
transition:none!important;
}
/*menu items in het midden zetten en scroll mogelijk maken*/
nav .header-menu .collapse-screen{
width:100%;
height:100%;
display:flex;
justify-content:center;
overflow-y:auto;
}
nav .header-menu .header-collapse .collapsed-nav-wrap{
width:100%;
height:inherit;
}
/*place menu items in a smaller container so accedently pressing the sides won’t klik you to a page./
menu items in een kleiner formaat zodat je er niet random op klikt */
nav .header-menu .header-collapse #menu-hoofdmenu{
width:300px;
padding:80px 0px 80px 0px;
margin-left:auto;
margin-right:auto;
}
/*menu items*/
nav .header-menu .header-collapse #menu-hoofdmenu li a{
color:red;
font-family:”Open-Sans”;
text-transform:uppercase;
text-align:center;
letter-spacing:1px;
}
/*add effects when active / voeg effecten toe wanneer actief*/
nav .header-menu .header-collapse #menu-hoofdmenu li.active > a{
color:yellow;
}
/*add effects when hover / voeg effecten toe wanneer je met je muis over heen gaat*/
nav .header-menu .header-collapse #menu-hoofdmenu li a:hover{
color:lime;
}
/*the dropdown menu*/
nav .header-menu .header-collapse #menu-hoofdmenu li .dropdown-menu{
padding-top:0px;
padding-bottom:0px;
margin-left:13px;
border:none;
border-radius:0px;
}
/*dropdowm menu items anchor*/
nav .header-menu .header-collapse #menu-hoofdmenu li .dropdown-menu a{
color:red;
}
/*add effects to dropdowm menu items when active / voeg effecten toe aan dropdown menu items */
nav .header-menu .header-collapse #menu-hoofdmenu .dropdown-menu li.active a,
nav .header-menu .header-collapse #menu-hoofdmenu.active a.dropdown-toggle{
color:lime;
}
/*add hover effect to dropdown menu item / voeg hover effecten toe aan dropdown menu items*/
nav .header-menu .header-collapse #menu-hoofdmenu li .dropdown-menu a:hover{
background-color:pink;
}
/*large breakpoint / laptop / lg / min-width: 992px*/
@media only screen and (min-width: 992px){
/*NAVBAR*/
/*menu van mobiel naar desktop modus*/
nav.navbar{
flex-direction:row;
padding:0px;
}
/*brand image wrap */
nav .navbar-brand{
padding-top:0px;
padding-bottom:0px;
}
/*brand image width / logo breedte*/
nav .navbar-brand img{
width:477px;
}
/**/
nav .header-menu .header-collapse{
background-color:transparent;
position:relative;
height:auto;
width:auto;
top:0;
right:0;
bottom:0;
left:0;
z-index:1000;
}
/*turns off overflow so dropdowns work correctly / zet overflow uit zodat dropdowns correct werken*/
nav .header-menu .collapse-screen{
overflow:unset;
}
/*menu*/
nav .header-menu .header-collapse #menu-hoofdmenu{
position:relative;
min-height:auto;
width:100%;
padding:0px;
margin-top:0px;
margin-right:10px;
margin-bottom:0px;
margin-left:auto;
}
/*menu items*/
nav .header-menu .header-collapse #menu-hoofdmenu li{
}
/*add hover effects on menu item / voeg hover effecten toe aan menu item*/
nav .header-menu .header-collapse #menu-hoofdmenu li:hover{
background-color:black;
}
/*add effects to menu items anchors when active / voeg effecten toe menu item ankers wanneer actief*/
nav .header-menu .header-collapse #menu-hoofdmenu li.active > a{
border-bottom:2px solid red;
}
/*menu items anchors / menu item ankers*/
nav .header-menu .header-collapse #menu-hoofdmenu li a{
padding:12px 18px!important;
margin-right:0px!important;
margin-left:0px!important;
font-size:16px;
}
/*add hover effect to menu item anchors / voeg hover effecten toe aan menu item ankers*/
nav .header-menu .header-collapse #menu-hoofdmenu li a:hover{
}
/*add menu item decoration / voeg menu item decoraties toe*/
nav .header-menu .header-collapse #menu-hoofdmenu li:before{
content:””;
position:absolute;
width:calc(100%10px);
bottom:0;
left:5px;
}
/*add effect on decoration on hover / voeg effecten toe aan menu item decoraties op hover*/
nav .header-menu .header-collapse #menu-hoofdmenu li:hover:before{
}
/*add menu item decoration to active an element / voeg menu item decoraties toe aan een actieve element*/
nav .header-menu .header-collapse #menu-hoofdmenu li.active:before{
}
/*dropdowns*/
/*add effect to active menu dropdown toggler / voeg effecten toe aan een actieve menu dropdown toggler*/
nav .header-menu .header-collapse #menu-hoofdmenu li.active a.dropdown-toggle{
}
/*dropdown menu*/
nav .header-menu .header-collapse #menu-hoofdmenu li .dropdown-menu{
}
/*dropdown menu item*/
nav .header-menu .header-collapse #menu-hoofdmenu .dropdown-menu li{
background-color:darkgrey;
}
/*add effects to active dropdown menu item / voeg effecten toe aan actieve dropdown menu items*/
nav .header-menu .header-collapse #menu-hoofdmenu .dropdown-menu li.active a{
}
/*add hover effects to dropdown items / voegt hover effecten op dropdown items*/
nav .header-menu .header-collapse #menu-hoofdmenu li .dropdown-menu a:hover{
}
/*add decoration to a dropdown menu item / voegt decoraties toe aan dropdown menu item*/
nav .header-menu .header-collapse #menu-hoofdmenu .dropdown-menu li:before{
content:none;
}
/*add decoration to a dropdown menu item / voegt decoratie toe aan dropdown menu items*/
nav .header-menu .header-collapse #menu-hoofdmenu .dropdown-menu li.active:before{
content:none;
}
}
/*extra large breakpoint / desktop / xl min-width: 1200px*/
@media only screen and (min-width: 1200px){
/*places navbar more to the center*/
nav.navbar{
justify-content:space-between;
}
}

Uitleg

Met deze header krijg je bij de mobiele navigatie een volledig gevulde menu over het scherm.