Crea un bonito y práctico nav drawer facilmente
Links directos:
Para el correcto funcionamiento es necesario cargar los material icons y la fuente Roboto puedes revisar aquí: https://e1016.github.io/js-wipe/ un ejemplo, los gestos solo funcionan en dispositivos móviles
Para comenzar necesitaremos incluir 2 etiquetas en nuestro documento, estas servirán como referencia para que se incluya el resto del menú
<span class="__modal_drawer"></span> <!-- 1 -->
<div id="drawer_js"></div> <!-- 2 -->
- ( __modal_drawer ) se trata de el fondo semi-transparente que aparece cuando el menú se despliega, para que se pueda interactuar con el resto del sitio cuando el drawer esté activo
- ( drawer_js ) El contenedor principal del drawer
Nuestro drawer se inicializa con el metodo init
del objeto Drawer
, y recive como parámetro un objeto con 2 nodos principales: sección de cabecera llamada main
y items del menú llamados menu
, ej.
Drawer.init({
main: // header,
menu: // menu-items
})
El nodo main
debe contener un objeto con los siguientes nodos
main: {
background: 'sources/bg.jpg', // <- path del fondo de la sección de header
photo: 'sources/cobie-smulders.jpg', // <- path de la foto de perfil
title: 'Cobie Smulders', // <- Nombre del usuario
subtitle: 'exam@mail.com', // <- Correo o identificador del usuario
}
El nodo menu
recibe un arreglo de objetos, donde cada uno define un item
menu: [{
icon: 'account circle', // <- define el ícono del item
label: 'Mi perfil', // <- define label del item
action: '/profile' // <- URL a la que enviará este boton o la funcion que ejecutará
},
{
separator: 'settings' // <- separador
},
{
icon: 'share',
label: 'Compartir',
action: share // <- agrega un apuntador a la función `share()` y se ejecutará con el evento click
}]
icon:
recibe un string con el nombre correspondiente del mismo en la librería de material iconslabel:
recibe un string con el nombre que queremos escribir en el itemaction:
este elemento puede recivir una ruta o URL o una función a ejecutar con un click, ej. para asignarfunction share() { ...
le asignamos el nombre de la función sin comillas ni paréntesis, de forma que actúe como un apuntador a la misma, no es posible asignar funciones anónimasseparator:
este nodo recibe un string que utilizará como título de una sección
Recapitulando, el hash que recibe como parámetro Drawer.init
de ser añadido directamente en el método, se vería así:
Drawer.init({
main: {
background: 'sources/bg.jpg',
photo: 'sources/cobie-smulders.jpg',
title: 'Cobi Smulders',
subtitle: 'exam@mail.com'
},
menu: [{
icon: 'account_circle',
label: 'Mi perfil',
action: '/profile'
},{
icon: 'favorite',
label: 'Favoritos',
action: '/profile'
},{
icon: 'share',
label: 'Compartir',
action: share
},{
separator: 'settings'
},{
icon: 'settings_applications',
label: 'Ajustes',
action: '/profile'
}]
})
Es posible incluir un botón que despliegue el drawer, añadiendo el id mdrawer_trgger a cualquier etiqueta, en caso de desktop donde los geston no funcionan, o por simple comodidad
<button id="mdrawer_trgger">menú</button>