Menú de pestañas (tabs menu) usando JavaScript y sessionStorage

Creación de una lista que hará la función de menú de una página, cuya única objetivo es mostrar contenido sin necesidad de recargar la página. Para ello se ha usado HTML5, JavaScript y para mantener seleccionada la pestaña actual aún siendo está recargada se ha utilizado sessionStorage.

Se pueden crear menús de pestañas usando bibliotecas como jQuery o Bootstrap, pero este HowTo lo vamos a realizar usando simplemente JavaScript.

  • El ejemplo se puede ver aquí y comprobar su funcionamiento aquí

Creando el Menú de pestañas

Esta es la parte más sencilla a la hora de crear el menú y vamos a intentar incluir el menor código posible:

  • Creamos el menú de lista usando el elemento <ul> de HTML5 y como atributo de clase le asignaremos tabMenu.
  • Todos los elementos <li> de la lista tienen como atributo de clase el valor tabLi y activamos por defecto uno de ellos con el valor active.
  • Cada elemento <li> tiene su elemento <span> con una clase especifica que nos permitirá asociarlo a su contenido.

Cada elemento del menú anterior tiene que relacionarse con un contenido por lo que vamos a incluirlo de la siguiente forma:

  • Agrupamos el contenido dentro de elemento <div> con valor de clase tabs.
  • Para que el contenido del menú se corresponda con el menú activado su valor de clase debe corresponder con el mismo que el la lista del menú.

Un poquito de JavaScript /ECMAScript

El funcionamiento del menú tiene los siguientes procesos:

  • Inicialmente usamos sessionStorage para poder guardar una pestaña por defecto.
  • Guardamos los nodos de los elementos <li> y <span> del menú y que luego necesitaremos para realizar comprobaciones en ellos.
  • Usando el loop forEach de ECMAscript 6> recorremos el contenido del menú e incluimos un evento click a cada una de ellos para así realizar unos procesos o acciones cuando el usuario pulse sobre ellos.
  • Si el usuario hace click guardamos el nombre de la pestaña haciendo uso de sessionStorage.
  • Limpiamos  cualquier clase que no sea tabLi a los elementos de la lista. De esta manera limpiamos el que esté seleccionado actualmente.
  • Recorremos todas las capas con el contenido y vamos comparándolas con la que ha pulsado el usuario. En caso de coincidencia mostramos el contenido y asignamos la clase active para marcarla.
  • El último proceso es comprobar el valor usando sessionStorage, que nos permite comprobar la pestaña guardada y dejarla activa en caso de que el usuario recargue la página.

Un poquito de CSS

Por supuesto todo menú necesita algo de maquetación CSS para poder darle un poco de color y vistosidad.

El ejemplo se puede comprobar en jsFiddle

Otra forma de hacerlo

También se puede realizar este mismo menú usando funciones, eventos con atributos y bucles for,  pero aunque también es funcional y podría ser más comprensible es más de la vieja escuela (old style). Podéis ver un ejemplo aquí

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.