A la hora de implementar el sideMenu recuerda siempre la importancia de que una aplicación web sea responsive para que pueda adaptarse a cualquier dispositivo, ya sea un celular, una tablet o un ordenador.
Menú mobile
Utilizando el estado de los componentes de Angular, podrás mostrar un menú lateral solo en dispositivos pequeños.
Paso 1: Comienza dividiendo tu <header> adaptándolo con CSS para mostrar u ocultar elementos dependiendo el tamaño del dispositivo:
<!-- components/nav-bar/nav-bar.component.html -->
< header class = " " header"" >
< div class = " " d-flex-mobile"" >
< a href = " " #"" class = " " logo"" > CompanyLogo </ a >
< div class = " " show-side-menu"" >
< app-side-bar > </ app-side-bar >
</ div >
</ div >
< div class = " " header-right hidde-menu"" >
< a href = " " #"" > Home </ a >
< a class = " " active"" href = " " #"" > Catalogo </ a >
< a href = " " #"" > About </ a >
</ div >
</ header >
/* components/nav-bar/nav-bar.component.scss */
.header {
/* ... */
.show-side-menu {
display : none ;
}
}
/* Header Mobile */
@media screen and ( max-width : 512 px ) {
/* ... */
.d-flex-mobile {
display : flex ;
justify-content : space-between ;
align-items : center ;
}
.show-side-menu {
display : block ;
}
.hidde-menu {
display : none ;
}
}
Paso 2: Crea el componente que será la barra de navegación lateral:
// components/side-bar/side-bar.component.ts
@ Component ( {
selector : 'app-side-bar' ,
templateUrl : './side-bar.component.html' ,
styleUrls : [ './side-bar.component.scss' ]
} )
export class SideBarComponent {
public showMenu = false ;
toggleSideBar ( ) : void {
this . showMenu = ! this . showMenu ;
}
}
<!-- components/side-bar/side-bar.component.html -->
< div id = " " main"" >
< button class = " " openbtn"" (click) = " " toggleSideBar()"" > ☰ </ button >
</ div >
< div id = " " mySidebar"" class = " " sidebar"" [ngClass] = " " this.showMenu ? 'showMenu': '"" >
< a href = " " javascript: void(0)"" class = " " closebtn"" (click) = " " toggleSideBar()"" > × </ a >
< a href = " " #"" > Home </ a >
< a class = " " active"" href = " " #"" > Catalogo </ a >
< a href = " " #"" > About </ a >
</ div >
/* components/side-bar/side-bar.component.scss */
.sidebar {
height : 100 % ;
width : 0 ;
position : fixed ;
z-index : 1 ;
top : 0 ;
left : 0 ;
background-color : #f1f1f1 ;
overflow-x : hidden ;
transition : 0.5 s ;
padding-top : 60 px ;
box-shadow : 0 3 px 6 px #00000029 ;
a {
padding : 8 px 8 px 8 px 32 px ;
text-decoration : none ;
font-size : 22 px ;
color : black ;
display : block ;
transition : 0.3 s ;
}
.active , a :hover {
color : #98ca3f ;
}
.closebtn {
position : absolute ;
top : 0 ;
right : 25 px ;
font-size : 36 px ;
margin-left : 50 px ;
}
}
.openbtn {
cursor : pointer ;
font-size : 20 px ;
color : black ;
background-color : #f1f1f1 ;
padding : 10 px 15 px 15 px 15 px ;
border : none ;
}
#main {
transition : margin-left .5 s ;
padding : 12 px ;
}
@media screen and ( max-height : 450 px ) {
.sidebar { padding-top : 15 px ; }
.sidebar a { font-size : 18 px ; }
}
.showMenu {
width : 250 px ;
}
Paso 3: Fíjate en la función toggleSideBar() que activará o desactivará el menú lateral al hacer clic en el botón.
{height="""" width=""""}
Es importante considerar la navegación del usuario, tanto en pantallas grandes como en pequeñas, que el menú sea de rápido acceso y accesible.
Ver código fuente del proyecto
Contribución creada con los aportes de Kevin Fiorentino.