Tutorial Divi: Cómo contraer o agrupar los submenús en Divi

Inicio / Blog / Snippets / Tutorial Divi: Cómo contraer o agrupar los submenús en Divi

Autor: Jefferson M

Publicación: 29 Dic, 2020

En este tutorial de Divi te enseñamos a contraer o agrupar los submenús que tengas creados en un menú dentro de Divi. Esta mejora funciona especialmente bien en dispositivos móviles, colapsando los submenús de tu menú principal, logrando una gran estética y mejora en la experiencia de navegación a través de móvil en Divi.

Tiempo de lectura estimado: 4 minutos

Índice

Con este tutorial lograrás este resultado:

¿Cómo contraer o agrupar los submenús para móvil en Divi?

Una de las solicitudes más comunes acerca del menú de Divi es la posibilidad de contraer los elementos del submenú para que se vean de forma ordenada en móvil y además, generen una excelente experiencia de usuario. Así que hoy les mostraré lo que creo que es la mejor y más fácil forma de hacer esto. Este tutorial es posible gracias al código de Nelson Miller de peeayecreative.com que lo ha creado para hacernos la vida (incluyéndome) más fácil a todos.

Primero agregamos algo de JQuery para contraer los submenús

La idea aquí es cambiar el menú en móvil Divi de una lista gigante y que ocupa todo el espacio de la pantalla a una hermosa lista compacta. Podemos hacer esto agregando algo de código jQuery y CSS. Esto no solo colapsará el submenú del menú Divi en móvil, sino que también agregará algunos conmutadores (o botones) que indicarán al usuario que hay más elementos para mostrar en ese submenú al hacer clic.

El siguiente código puedes agregarlo en el archivo scripts.js de tu childtheme, o también en las opciones del tema Divi > Integraciones > agregar código al < head > de tu blog.

<script >
    jQuery(function($) {
        $(document).ready(function() {
            $("body ul.et_mobile_menu li.menu-item-has-children, body ul.et_mobile_menu  li.page_item_has_children").append('<a href="#" class="mobile-toggle"></a>');
            $('ul.et_mobile_menu li.menu-item-has-children .mobile-toggle, ul.et_mobile_menu li.page_item_has_children .mobile-toggle').click(function(event) {
                event.preventDefault();
                $(this).parent('li').toggleClass('dt-open');
                $(this).parent('li').find('ul.children').first().toggleClass('visible');
                $(this).parent('li').find('ul.sub-menu').first().toggleClass('visible');
            });
            iconFINAL = 'P';
            $('body ul.et_mobile_menu li.menu-item-has-children, body ul.et_mobile_menu li.page_item_has_children').attr('data-icon', iconFINAL);
            $('.mobile-toggle').on('mouseover', function() {
                $(this).parent().addClass('is-hover');
            }).on('mouseout', function() {
                $(this).parent().removeClass('is-hover');
            })
        });
    }); 
</script>

Ahora añadiremos el código CSS para darle los estilos al submenú agrupado

Lo siguiente que debes hacer es agregar el código CSS al sitio web para darle los estilos necesarios y así contraer o agrupar los submenú.

Debes copiar y pegar el snippet a continuación en las opciones de tema de Divi > CSS personalizado para que se apliquen en todo el sitio web:

/* CSS para Submenu colapsado en Divi */
/*Ajustar el nuevo toggel del submenu*/

ul.et_mobile_menu li.menu-item-has-children .mobile-toggle,
ul.et_mobile_menu li.page_item_has_children .mobile-toggle,
.et-db #et-boc .et-l ul.et_mobile_menu li.menu-item-has-children .mobile-toggle,
.et-db #et-boc .et-l ul.et_mobile_menu li.page_item_has_children .mobile-toggle {
	width: 44px;
	height: 100%;
	padding: 0px !important;
	max-height: 44px;
	border: none;
	position: absolute;
	right: 0px;
	top: 0px;
	z-index: 999;
	background-color: transparent;
}


/*CSS para tener todo acomodado*/

ul.et_mobile_menu>li.menu-item-has-children,
ul.et_mobile_menu>li.page_item_has_children,
ul.et_mobile_menu>li.menu-item-has-children .sub-menu li.menu-item-has-children,
.et-db #et-boc .et-l ul.et_mobile_menu>li.menu-item-has-children,
.et-db #et-boc .et-l ul.et_mobile_menu>li.page_item_has_children,
.et-db #et-boc .et-l ul.et_mobile_menu>li.menu-item-has-children .sub-menu li.menu-item-has-children {
	position: relative;
}


/*Remover el background color de los items del submenu*/

.et_mobile_menu .menu-item-has-children>a,
.et-db #et-boc .et-l .et_mobile_menu .menu-item-has-children>a {
	background-color: transparent;
}


/*Colapzar submenu por defecto*/

ul.et_mobile_menu .menu-item-has-children .sub-menu,
#main-header ul.et_mobile_menu .menu-item-has-children .sub-menu,
.et-db #et-boc .et-l ul.et_mobile_menu .menu-item-has-children .sub-menu,
.et-db #main-header ul.et_mobile_menu .menu-item-has-children .sub-menu {
	display: none !important;
	visibility: hidden !important;
}


/*Mostra el submenu cuando el toggle este abierto*/

ul.et_mobile_menu .menu-item-has-children .sub-menu.visible,
#main-header ul.et_mobile_menu .menu-item-has-children .sub-menu.visible,
.et-db #et-boc .et-l ul.et_mobile_menu .menu-item-has-children .sub-menu.visible,
.et-db #main-header ul.et_mobile_menu .menu-item-has-children .sub-menu.visible {
	display: block !important;
	visibility: visible !important;
}


/*Ajuste de los estilos del toggle*/

ul.et_mobile_menu li.menu-item-has-children .mobile-toggle,
.et-db #et-boc .et-l ul.et_mobile_menu li.menu-item-has-children .mobile-toggle {
	text-align: center;
	opacity: 1;
}


/*Icono del toggle del submenu cuando esta cerrado*/

ul.et_mobile_menu li.menu-item-has-children .mobile-toggle::after,
.et-db #et-boc .et-l ul.et_mobile_menu li.menu-item-has-children .mobile-toggle::after {
	top: 10px;
	position: relative;
	font-family: "ETModules";
	content: '3';
	color: #3665db;
	background: #f0f3f6;
	border-radius: 50%;
	padding: 3px;
}


/*Icono del toggle del submenu cuando esta abierto*/

ul.et_mobile_menu li.menu-item-has-children.dt-open>.mobile-toggle::after,
.et-db #et-boc .et-l ul.et_mobile_menu li.menu-item-has-children.dt-open>.mobile-toggle::after {
	content: '2';
}


/*Agregar forma de punta cuando el submenu está abierto*/

.et_pb_menu_0.et_pb_menu .et_mobile_menu:after {
	position: absolute;
	right: 5%;
	margin-left: -20px;
	top: -14px;
	width: 0;
	height: 0;
	content: '';
	border-left: 20px solid transparent;
	border-right: 20px solid transparent;
	border-bottom: 20px solid #ffffff;
}

/*CSS de caja de menu y color del background*/

.et_pb_menu_0.et_pb_menu .et_mobile_menu,
.et_pb_menu_0.et_pb_menu .et_mobile_menu ul {
	background-color: #ffffff!important;
	border-radius: 10px;
}

¡Y eso es todo!

Espero que este tutorial te sirva para mejor la experiencia de usuario en la navegación de tu sitios web, para usuarios que lo hacen desde móvil. Como ves, fue super sencillo contraer o agrupar los submenús para móviles y así lograr este poderoso efecto.

Tips adicionales

¿Ves que es facilísimo? ¡No te pierdas nuestros tutoriales premium para crear menús personalizados con theme builder de Divi acá!

17 Comentarios

  1. Miquel Pujante Marco

    Buenos dias maestro.

    En la web https://vinodecantalia.com/ (ojo el problema es solo en la versión móvil) en la parte móvil (verás que tengo pegados un menú principal y un secundario) Me colapsa todo en una sola y tengo que desplegar… eso me puedo acostumbrar.

    El problema me viene cuando quiero cambiar el nombre del secundario por uno que diga Categorías (y así distinguirlo del principal) me los cambia a los dos

    ¿Puedes ayudarme?

    Responder
    • Jefferson M

      Ya lo vi. Lo que se me ocurre es que le des una clase diferente a cada menú, por ejemplo menu_1 y menu_2 y luego, al CSS donde estas aplicando el nombre del menú, lo dupliques y coloques cada uno a una clase diferente, de manera que se diferencien entre sí, porque seguro lo que está pasando es que en el CSS que estás metiendo estas aplicando el nombre para la clase del menú en general.

      Responder
  2. jose

    Hola! muy padre este tutorial, me gustó mucho. De ante mano muchas gracias, pero tengo una duda, ¿Cómo puedo lograr que el submenú se abra y cierre, no necesariamente dando clic en el símbolo? Ósea que pueda presionar en el texto inicialdel submenú y también se abra y cierre, sin tener que presionar obligatoriamente justo en el ícono. Espero y me explique, gracias!!

    Responder
    • Jefferson M

      Qué tal José, se tendría que modificar el código en general de esta solución, pero ahora mismo estamos realizando otros contenidos, lo revisaríamos después y cuando tengamos alguna respuesta del cambio lo pondríamos.

      Responder
    • Tania G

      Hola José ¿Encontraste la solución a tu pregunta? Estoy buscando resolver lo mismo que tú mencionas. Se agradece si tienes alguna recomendación. Saludos!

      Responder
  3. Francisco José S

    Hola, yo también tengo el mismo problema que José y Tania, es muy molesto que solo funcione pulsando sobre el símbolo y no sobre el texto, de hecho a los usuarios los lleva a error.
    Jefferson, estaría genial si consigues darle solución. Yo no tengo ni idea de Javascript, que entiendo que es lo que hay que modificar. Saludos!

    Responder
    • Jefferson M

      Que tal Francisco, así es, esto esta en cola de producción.

      Responder
  4. Felipe Silva

    Hola Jefferson, Excelente post y tu canal de youtube, de otro planeta!
    Tengo una duda: He creado el menu de mi blog a través del generador de temas de divi, y he seguido cada uno de los pasos que explicas en este post para contraer el menu y efectivamente se contrae.
    Sin embargo, no me deja la opción de ver los submenus…habrá que hacer alguna modificación en el código?
    A ver si me puedes dar algun tips para solucionarlo.

    Gracias!

    Responder
  5. Jhonny Vasquez

    Jefferson M. Con los submenú funciona correctamente, pero como haría para que funcione con la clase Mega-Menu ?
    para ellos no funciona, hay alguna manera o codigo que me pueda apoyar con los Item de Clase Mega-Menu

    Responder
    • Jefferson M

      Que tal Estimado. Me parece que no. Para mega menú el funcionamiento sería totalmente diferente y el código también.

      Responder
  6. Omar Ivan Gerrero Hurtado

    Hola Jeff, realice todo el proceso pero tengo la siguiente novedad, en mi menu principal solo tengo una categoría que tienen submenú las demas son enlaces anclas dentro del sitio al realizar el proceso agrupa los menú y no muestra los submenú de la única categoría que le aplica, consulto todos los menú deben de tener subcategorías?, la web la tengo en construcción.

    Responder
    • Jefferson M

      Qué tal Omar, no entiendo mucho el problema, si me puedes compartir enlaces o capturas de pantalla me serviría.

      Responder
  7. Natzan

    Hola Jefferson,

    El tutorial esta muy bien.

    Tengo dos preguntas por si puedes hacer un tutorial nuevo y responderlas.

    1. ¿ si creas la cabecera del menu con ”Theme builder” funciona el codigo?

    2. Cuando haces un menu principal con ”Theme builder” y quieres que sea transparente al estar fijo y cuando se mueva la pagina se quede opaco, no se como se puede hacer. ¿puedes hacer un tutorial? o explicar si existe codigo. Gracias

    Un buen trabajo lo que compartes con nosotros.

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Iniciar Sesión

¿No tienes cuenta? Registrarse

Otros planes

¡Accede a más de 1330 contenidos especializados en Diseño Web con Divi por un solo precio!

Trimestral

Ahorra 6 USD 🔥

$US 18/ Mes

*Pagando US$ 54 cada 3 meses

¿A qué accedes con este plan?

Lifetime

Un solo pago 🔥

$US 499/ Lifetime

*UN SOLO PAGO DE POR VIDA

¿A qué accedes con este plan?

Con este plan accedes a:

  1. ✅ Todos los cursos
  2. ✅ Todos los tutoriales prémium
  3. ✅ Todos los plugins y layouts
  4. ✅ Soporte prémium vía email
  5. ✅ Acceso a la comunidad en Discord

Con este plan accedes a:

  1. ✅ Todos los cursos
  2. ✅ Todos los tutoriales prémium
  3. ✅ Todos los plugins y layouts
  4. ✅ Soporte prémium vía email
  5. ✅ Acceso a la comunidad en Discord
  6. ✅ Descuentos en Templates para Divi

Solicitud de cancelación de suscripción

Aviso importe

🚩 Debes solicitar la cancelación de tu suscripción al menos 24 horas antes de tu renovación, de otro modo, no podremos procesar a tiempo la cancelación antes de tu renovación.

Al cancelar tu suscripción, perderás el acceso a todo esto:

🚩 A más de mil contenidos especializados en el aprendizaje del diseño web
🚩 El soporte personalizado en Divi
🚩 Acceso al grupo de Discord
🚩 Acceso a la descarga de las actualizaciones de los plugins, el contenido y las descargas de nuestro sitio.
🚩 Puntos y rangos obtenidos en la plataforma

✅ Te ofrecemos la opción de pausar tu suscripción 2 o 3 meses y así no perderás el progreso obtenido en la plataforma.

Lamentamos mucho 😩 que tu experiencia en nuestra plataforma no haya sido la mejor. Para poder procesar tu solicitud y hacerla efectiva, necesitaremos que por favor nos envíes lleno este formato. Esto nos ayudará a poder seguir mejorando nuestra propuesta de valor y siendo útil para todos los usuarios.

Solicitud de cancelación

¿Por cuál o cuáles razones deseas cancelar tu suscripción?

¿Qué características mejorarías en nuestra web?

¿Cuál es tu nivel de satisfacción en relación con la calidad del soporte que ofrecemos por diferentes medios? donde 1 es insatisfecho y 5 es satisfecho

¿En esta escala que tanto recomendarías a UXDIVI a un amigo o colega? donde 1 es "no lo recomendaría" y 5 es "Lo recomendaría totalmente"

9 + 11 =