En este tutorial gratuito aprenderás a crear un menú overlay fullscreen (pantalla completa) para dispositivos móviles usando el «módulo menú» por defecto de divi y un poco de magia con CSS.
Si has sido miembro de Divi durante un tiempo, sabrás que al construir un menú personalizado desde el Generador de Temas, no hay una opción para convertir el menú hamburguesa en pantalla completa en dispositivos móviles. Esta opción solo está disponible cuando se utiliza el menú predeterminado del Personalizador de Temas. Sin embargo, gracias a este tutorial, aprenderás a aplicar un poco de magia para obtener un menú de pantalla completa en dispositivos móviles. Lo mejor de todo es que solo necesitarás un fragmento de código CSS que ya he preparado para ti.

Lo primero que tenemos que hacer es crearnos un header personalizado desde el theme builder, posteriormente vamos a construir nuestro encabezado incrustando el módulo menú. No importa los estilos que le des a tu menú para versión escritorio, en móvil lo vamos a convertir a pantalla completa.
La clave está en qué vamos a agregar el nombre de clase «ov-menu-movil-fullscreen» al módulo menú de divi.
Posteriormente en los ajustes de la página / Avanzado / CSS Personalizado pegaremos el siguiente código CSS:
/*** Estilos Menu Fullscreen Móvil ***/
body .ov-menu-movil-fullscreen .opened .et_mobile_menu,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .opened .et_mobile_menu {
width: 100vw;
position: fixed;
top: 0px;
left: 0px;
height: 100vh !important;
display: flex;
justify-content: center;
flex-direction: column;
opacity: 1;
visibility: visible;
transition: visibility 0.3s, opacity 0.3s ease-in-out;
padding: 0;
overflow-y: auto;
}
body .ov-menu-movil-fullscreen .closed .et_mobile_menu,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .closed .et_mobile_menu {
text-align: center;
width: 100vw;
position: fixed;
left: 100vw;
top: 0px;
height: 100vh !important;
display: flex !important;
justify-content: center;
align-items: center;
flex-direction: column;
transition: visibility 0.3s, opacity 0.3s, left 1s, ease-in-out;
opacity: 0;
visibility: hidden;
}
body .ov-menu-movil-fullscreen .et_mobile_menu li
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_mobile_menu li {
list-style: none !important;
text-align: center !important;
width: 100%;
padding-left: 0 !important;
}
body .ov-menu-movil-fullscreen .et_mobile_menu li .sub-menu,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_mobile_menu li .sub-menu {
padding-left: 0 !important;
}
body .ov-menu-movil-fullscreen .et_pb_menu__wrap span.mobile_menu_bar,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_pb_menu__wrap span.mobile_menu_bar {
z-index: 999999 !important;
}
body .ov-menu-movil-fullscreen .et_pb_menu__wrap .opened .mobile_menu_bar:before,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_pb_menu__wrap .opened .mobile_menu_bar:before {
content: "\4d" !important;
}
body .ov-menu-movil-fullscreen .opened .mobile_menu_bar,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .opened .mobile_menu_bar {
position: fixed !important;
top: 20px;
right: 20px;
}
body .ov-menu-movil-fullscreen .et_mobile_menu,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_mobile_menu {
border-top: none;
}
body .ov-menu-movil-fullscreen .et_mobile_menu .menu-item-has-children>a,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_mobile_menu .menu-item-has-children>a {
background-color: transparent;
}
body .et_mobile_menu li a:hover {
background-color: transparent;
opacity: 1;
}
body .ov-menu-movil-fullscreen .et_mobile_menu li a,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .et_mobile_menu li a {
border-bottom: none;
}
¡Listo, eso es todo! Con esta simple configuración, ¡lo hemos logrado! 😍
Sin embargo, si tienes submenús dentro de tu menú y deseas que sean colapsables, entonces llevemos a cabo dos pasos adicionales…
El primero va ser agregar en un módulo código el siguiente código JavaScript:
<script>
document.addEventListener('DOMContentLoaded', function() {
function setup_collapsible_submenus() {
var menuItemsWithChildren = document.querySelectorAll('.mobile_nav .menu-item-has-children > a');
menuItemsWithChildren.forEach(function(menuItem) {
var span = document.createElement('span');
span.className = 'menu-closed';
menuItem.insertAdjacentElement('afterend', span);
});
menuItemsWithChildren.forEach(function(menuItem) {
var subMenu = menuItem.nextElementSibling.nextElementSibling;
if (subMenu.classList.contains('sub-menu')) {
subMenu.classList.toggle('hide');
}
});
var menuItemSpans = document.querySelectorAll('.mobile_nav .menu-item-has-children > a + span');
menuItemSpans.forEach(function(span) {
span.addEventListener('click', function(event) {
event.preventDefault();
this.classList.toggle('menu-open');
var subMenu = this.nextElementSibling;
if (subMenu.classList.contains('sub-menu')) {
subMenu.classList.toggle('hide');
}
});
});
}
window.addEventListener('load', function() {
setTimeout(function() {
setup_collapsible_submenus();
}, 700);
});
});
</script>
Posteriormente agregamos un nuevo fragmento de código CSS abajo del que ya tenemos en los Ajustes de la página / Avanzado / CSS Personalizado…
/* Estilos Menu Colapsado Movil */
body .ov-menu-movil-fullscreen .mobile_nav li ul.hide,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .mobile_nav li ul.hide {
display: none !important;
}
body .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children {
position: relative;
}
body .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children > a,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children > a {
background: transparent;
}
body .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children > a + span,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen .mobile_nav .menu-item-has-children > a + span {
position: absolute;
right: 0;
top: 0;
padding: 10px 20px;
font-size: 20px;
font-weight: 700;
cursor: pointer;
z-index: 3;
}
body .ov-menu-movil-fullscreen span.menu-closed:before,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen span.menu-closed:before {
content: "\4c";
display: block;
color: #000;
font-size: 18px;
font-family: ETmodules;
}
body .ov-menu-movil-fullscreen span.menu-closed.menu-open:before,
.et-db #et-boc .et-l .ov-menu-movil-fullscreen span.menu-closed.menu-open:before {
content: "\4d";
}
Si guardas los cambios ahora y revisas la parte frontal de tu sitio web, podrás notar que tu menú móvil no solo es de pantalla completa, sino que los submenús ahora son colapsables, ¡lo cual es realmente genial! 🤩
Si tienes alguna duda o pregunta, no dudes en dejar tu comentario en la sección de abajo. Siempre respondo, aunque últimamente mi prioridad son los miembros de los tutoriales exclusivos, así que daré prioridad de respuesta si eres parte de la Academia OV DIVI.
Un abrazo.





Hola
En el menú colapsable móvil algo no va bien pq me salen varios iconos para desplegar y replegar submenús.
Hola Noemí. ¿Cual es la url de tu web? La inspecciono para saber que sucede.
Hola, no funciona bien el scroll, ya que mueve el contenido de la página pero no el menú, además también quiero entrarlo y no puedo. Agradezco tu respuesta.
mi web:
https://mejora.dogo.mx/
ya lo pude mejorar con el otro script que compartiste en los comentarios en youtube, sin embargo, cuando abro varias subcategorías del menú, se pierden o se dejan de ver elementos superiores o inferiores:
mi web:
https://mejora.dogo.mx/
Hola Iván, revisando el menú en tu sitio veo que tienes varias opciones en el menú, entonces, para tu caso considero es mejor ajustar en la parte superior y no centrado verticalmente.
Para probar esta otra alternativa reemplaza el siguiente fragmento CSS:
body .ov-menu-movil-fullscreen .opened .et_mobile_menu, .et-db #et-boc .et-l .ov-menu-movil-fullscreen .opened .et_mobile_menu { width: 100vw; position: fixed; top: 0px; left: 0px; height: 100vh !important; display: flex; justify-content: center; flex-direction: column; opacity: 1; visibility: visible; transition: visibility 0.3s, opacity 0.3s ease-in-out; padding: 0; overflow-y: auto; }Por este otro:
body .ov-menu-movil-fullscreen .opened .et_mobile_menu, .et-db #et-boc .et-l .ov-menu-movil-fullscreen .opened .et_mobile_menu { width: 100vw; position: fixed; top: 0px; left: 0px; height: 100vh !important; display: flex; justify-content: flex-start; flex-direction: column; opacity: 1; visibility: visible; transition: visibility 0.3s, opacity 0.3s ease-in-out; padding: 60px 0 0 0; overflow-y: auto; }pego el css pero o me sale nada, no se donde tengoque poner el nombre de clase
Hola Divina, perdona que te responda hasta ahora. La clase «ov-menu-movil-fullscreen» se debe colocar en el módulo menú de Divi, tal como lo hacemos en el video.
Hola Oscar me sale en móvil el «más» para desplegar u ocultar los submenús, pero al darle clic cierra todo el menú no solo el submenú
Cómo lo puedo solucionar
Hola Javier, ¿tus enlaces principales son páginas también? Comparte la url de tu web y le doy un vistazo por fa
Hola Oscar buen dia
muy bueno ese video, pero me pasa algo, en lugar de aparecer el + en los sunmenus me apaece una L …. porque se da esto
mi web es: https://saluvia.com.co
Hola Juan, utiliza esta configuración en Divi Performance… Es probable que se deba a la opción «Iconos Dinámicos»…
Oscar Excelente!!!! muchas gracias ya no están las L ahora están los + … pero en los productos aveces quedan los botones de ofertas como superpuestos o encima del menu (y solo pasa en movil) … tienes alguna idea de el porque pasa eso?!…
mi web: https://saluvia.com.co/
¿Me puedes compartir una captura de pantalla de como se muestran por fa?
Mira asi queda en la version movil https://drive.google.com/file/d/1ysr4O6xWci-QbDop6LPj6x4FaQp-XehA/view?usp=sharing
si notas queda encima el boton de oferta, la lupa para buscar, y la descripcion del prodcuto por encima del menu en la version movil..
Porque pasara eso!?
Ahora entiendo el problema Juan.
En Divi / Opciones del tema / CSS Personalizado agrega este código:
header .et_builder_inner_content { z-index: 9999 !important; }Con este código el header de Divi lo colocamos por encima de todos los elementos de la página 😉
Hola Oscar el tutorial es buenisimo y muy claro!! solo tengo una consulta. Hay manera de agregar una notificación al carrito cuando el usuario agrega productos? actualmente no aparece ningun indicador y creo que mejoraría mucho la experiencia. Desde ya muchisimas gracias
Hola Luciana, un gusto saludarte. Muchas gracias por tu comentario.
Sobre tu consulta, ¿te refieres al carrito del menú? Tengo un tutorial premium enfocado a un menú para WooCommerce donde agregamos un carrito con un dropdown. Dale un vistazo a ver si es lo que buscas 🙂