Cerrar video

Cómo crear un menú fijo que se haga más pequeño al desplazarse con divi theme builder

por | Ago 11, 2020 | Tutorial gratuito | 71 Comentarios

Hola en este tutorial aprenderás a diseñar un menú fijo que se hará más pequeño al desplazarnos sobre la página, es decir, los elementos de nuestro header o encabezado se encogerán una vez hagamos scroll hacía abajo.

Este es un efecto que por defecto lo podemos hacer con el personalizador de temas de divi, pero en esta ocasión lo haremos con el divi theme builder o el generador de temas de divi ya que de esta manera tenemos más libertad a la hora de diseñar nuestros encabezados personalizados.

La verdad me esperé mucho para realizar este tutorial ya que Nick Roach (fundador de divi) hace semanas comentó que una de las próximas actualizaciones de divi serían los «Divi Sticky» y con esta nueva actualización vamos a poder realizar este tipo de efectos de forma más práctica con divi. Ésta es la principal razón por la que no me animaba a grabar este tutorial a pesar de que muchos de ustedes me lo habían estado pidiendo.

Pero ya esperé tanto que llegué a desesperarme y mejor decidí grabar este tutorial de una vez sin importar que en un futuro podamos realizar este efecto con el divi builder por defecto. De todas formas en este tutorial vamos a realizar otros truquitos sobre la marcha que seguro te servirán en tus proyectos, así que no hay nada de desperdicio. ¡Qué disfrutes este video!

A continuación te dejo los fragmentos de código que vamos a utilizar en este tutorial para que solo copies y pegues.

 

Fragmento para centrar verticalmente los elementos dentro de la fila:

display: flex;
align-items: center;
justify-content: center;

Fragmento jQuery para no superponer el menú fijo sobre la sección:

// No superponer el menu fijo
jQuery(function($){
   
var headerSection = $('.seccion-menu');   
headerSection.wrap('<div class="header-placeholder"></div>');
var headerWrap = $('.header-placeholder');
    
var headerHeight = headerSection.outerHeight();
headerWrap.css('height', headerHeight);  
   
$(window).resize(function() {
  headerHeight = headerSection.outerHeight();
  headerWrap.css('height', headerHeight);
});  
   
});

Fragmento jQuery para reducir los elementos de la sección menú al hacer scroll:

// Reducir elementos de la sección menú al hacer scroll 
jQuery(document).ready(function( $ ) {
  $(window).scroll(function(){
  	var scroll = jQuery(window).scrollTop();
	  if (scroll >= 80) {
	    $(".seccion-menu").addClass("seccion-menu-scroll");
	  }
    
	  else{
		$(".seccion-menu").removeClass("seccion-menu-scroll");
	  }
  });
});

Estilos CSS para la sección menú:

/* Estilos menu ov divi */
.seccion-menu, .seccion-menu .et_pb_image img, 
.seccion-menu .et_pb_menu ul li a, 
.seccion-menu .et_pb_button  {
  transition: all .3s ease;
}
.seccion-menu.seccion-menu-scroll {
  box-shadow: 0px 1px 35px 0px rgba(0,0,0,0.3)!important;
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  transition: all .3s ease;
}

@media only screen and (min-width: 768px) {
  .seccion-menu.seccion-menu-scroll .et_pb_image img {
    height: 40px !important;
    transition: all .3s ease;
	}
.seccion-menu.seccion-menu-scroll .et_pb_menu ul li a {
    font-size: 16px !important;
    transition: all .3s ease;
	}

body #page-container .seccion-menu.seccion-menu-scroll .et_pb_button {
    background-color: #ff8e60 !important;
    color: #ffffff !important;
  	padding-top: 10px!important;
    padding-bottom: 10px!important;
	}
}

/* Estilos botón llamada a la acción menú hamburguesa */
body #page-container .btn-principal {
  margin: 14px 10px 10px 10px;
}

body #page-container .btn-principal a {
  color: #ffffff !important;
  border-color: #ff8e60 !important;
 	background: #ff8e60 !important;
  border-radius: 100px;
  letter-spacing: 1px;
  text-transform: uppercase!important;
  padding: 12px 25px 10px 25px;
}

Estilos CSS para algunos ajustes en el menú móvil:

/* Ajustes responsive menú móvil */
@media only screen and (min-width: 981px) { 
  .btn-principal {
    display: none !important;
  }
}

@media only screen and (max-width: 980px) { 
  .seccion-menu .et_pb_menu__wrap {
    justify-content: flex-end !important;
  }
}

.et_mobile_menu {
  margin-top: 10px;
  width: 200%;
  margin-left: -100%;
}

/* Cambiar icono hamburguesa a "X" cuando esta abierto */
.mobile_nav.opened .mobile_menu_bar:before {
    content: '\4d';
}

¿Te ha gustado este tutorial? 🚀

¡Los Tutoriales Premium te van a encantar! Desde solo $10 USD al mes accede a más de 200 (¡y contando!) tutoriales únicos y exclusivos sobre Divi y WordPress. ¡Únete ahora y aumenta al 200% tus habilidades de diseño web con Divi!

Tutoriales Relacionados

71 Comentarios

  1. Jorge

    Excelente, me sirvió mucho para un proyecto que estoy realizando. Llevaba días probando formas, incluso perdí dinero con un plugin que no sirvió para nada de lo que ofrecía (lamento mucho eso…) y justo cuando estaba por tirar la toalla aparece tu video en youtube, en serio muchas gracias Oscar! 👏👏👏👏👏

    Responder
    • Oscar Viedma

      Jorge acabo de leer tu comentario en youtube y me parece excelente que este tutorial te haya solucionado los problemas que tenías con el menú en móvil. De eso se trata amigo, me alegra leer comentarios como el tuyo. ¡Nunca tires la toalla! 💪 Te mando un abrazo Jorge.

      Responder
  2. claudio

    hola oscar, muchas gracias por el tutorial, solo una consulta como lo hago para que el sub menú quede con un signo + y no abierto completo, saludos… gracias

    Responder
      • Carlos

        Hola de nuevo Oscar, no me apruebes este comentario ni el que está abajo. ya encontré la falla 🙈 . Disculpa las molestias. Y gracias por compartir tus conocimientos y ese tutorial de Divi. Un abrazo

        Responder
        • Oscar Viedma

          Hola Carlos qué tal amigo jaja Genial que lo has logrado, apenas te iba a dar mi respuesta.

          Cualquier otra duda me dices.

          Un abrazo.

          Responder
  3. W MH

    Hola Oscar, el layout de este tutorial se puede cnseguir si me suscribo a los tutoriales premium?

    Muchas gracias, me encantan tus proyectos

    Responder
    • Oscar Viedma

      Hola qué tal, la realidad es que para los tutoriales gratuitos no guardo los json. Pero deja ver si lo tengo por allí y te comento.

      Responder
  4. Rodolfo

    Hola Oscar, te sigo en tus canales y redes. La verdad tu material es de primera.
    Tenía que resolver algunas cuestiones, desp de más de 10 años estoy volviendo al diseño web de la mano de WordPress y Divi, y fué un salto enorme desde el html y los css, pero gracias a tutoriales como los tuyos puedo entender, desarrollar y crecer en mis conocimientos, humildemente empecé con mi web y bueno, ahora ya intentando modificaciones para mejorar. Gracias Totales desde Buenos Aires.

    Responder
    • Oscar Viedma

      Genial Rodolfo, muchas gracias por seguirme 🙂

      Así es Rodolfo, la web avanza a pasos agigantados y cada vez hay más y más herramientas para el desarrollo. WordPress + Divi es una excelente porque básicamente puedes hacer cualquier cosa ahorrándote mucho tiempo. Espero y todos los tutoriales te sirvan y te ayuden para tus proyectos. Seguiremos aportando mucho contenido Rodolfo, así que siempre atento al blog y al canal de youtube.

      Te mando un abrazo hasta Buenos Aires 🙂

      Responder
  5. Gabriela

    Hola! cuando el menú por defecto de divi tiene subítems, éstos se despliegan uno arriba del otro abriéndose abajo hacia a la izquierda o a la derecha dependiendo de la posición del ítem de menú padre. En mi caso tengo un menú de sólo un ítem muy pegado a la derecha que despliega varios subítems que se despliegan a su vez a la derecha, saliendo de la pantalla. El sistema por defecto no funciona en este caso ya que normalmente se muestran hacia la izquierda si es que no hay espacio disponible. No encuentro los estilos involucrados. Me podrías ayudar?

    Responder
    • Oscar Viedma

      Hola Gabriela qué tal, podrías intentar pegando el siguiente fragmento de código en Apariencia / CSS adicional:

      #top-menu > li:last-child .sub-menu {
      position: absolute;
      right: 0;
      }
      
      Responder
      • Yaca

        Hola porque en iPhone se me esconde solo el menú cuando llego a la parte superior pero en otros dispositivos Android y pc el efecto si funciona correctamente gracias por los vídeos espero me ayudes

        Responder
        • Oscar Viedma

          Hola Yaca ¿Cual es la url de tu web? Quiero probarla desde mi iPhone para ver lo que comentas

          Responder
  6. Gabriela

    Hola! gracias! pero no ha resultado con el código. En realidad no puedo ver, al menos en el inspector, el ID #top-menu para el menú en particular. Este menú se comporta de formas diferente al menú por defecto, ya que por ejemplo, tampoco se despliega a todo el ancho en la vista del celular.

    Responder
    • Oscar Viedma

      Compárteme tu sitio para entender mejor que sucede. A ver si descubro el código.

      Responder
  7. Sandra Cabrera

    Hola! muchas gracias por el tutorial, estoy viendolo en youtube, tengo un problema, no puedo copiar el codigo para hacer los cambios, coloco copiar y cuando voy a pegar no aparece la opcion. Podra decirme si existe algun atajo de teclado o se hace de forma diferente?, gracias

    Responder
    • Sandra Cabrera

      Ahora pude copiar el codigo pero cuando refresco la pagina me aparece la escritura del codigo en el encabezado. Super raro, que puede estar pasando, sigo los pasos como en el tutorial

      Responder
      • Oscar Viedma

        Hola Sandra qué tal, ¿A qué código te refieres? Si te aparece la escritura del código en el encabezado es que algún signo te está faltando en el código. Debes revisar qué esté bien escrito.

        Responder
    • Andes

      Hay una manera para que el menú se desplace de manera deslizante hacia lado derecho y no se desplaza hacia abajo?

      Responder
  8. federico

    hola oscar, excelente tutorial, solo que tengo algunos errores al implementar el codigo, por ejemplo desde el movil el menu me queda centrado y no a la derecha, y otro problema es que cuando se despliega el menu no lo hace en pantalla completa..

    podrias ayudarme por favor ?

    Responder
    • Oscar Viedma

      Hola qué tal Federico. Compárteme la url de tu sitio para que vea el comportamiento que tiene. Seguramente encontramos la solución. Un abrazo.

      Responder
      • Jess

        Hola, tengo el mismo problema 🙁 ayuda!

        Responder
  9. Carlos

    Hola Oscar! Excelente video y muy útil. Quería preguntarte por el texto del botón de llamada a la acción en el menú hamburguesa que aparece alineado a la izquierda. He tratado de dejarlo alineado al centro pero no encuentro como hacerlo. Me podrías ayudar por favor? Gracias y que estés muy bien.

    Responder
    • Oscar Viedma

      Hola Carlos, ¿también pudiste solucionar esto? ¿o aquí si necesitas ayuda? 🤭

      Responder
      • Carlos

        Hola Osacr, gracias por tu respuesta crack! No lo he solucionado… SI me pudieras ayudar para que el texto del botón en el menú hamburguesa quedara centrado, te lo agradecería enormemente. Un abrazo desde Canarias

        Responder
        • Oscar Viedma

          Envíame el enlace para ver tu sitio porque así me es difícil poder darte una solución 🙂

          Responder
          • Oscar Viedma

            Carlos en el código CSS, en la siguiente línea (selectores): body #page-container .btn-principal a

            Agrega la propiedad y valor: text-align: center;

            Con eso queda centrado el botón 🙂

          • Carlos

            Genial! Gracias Oscar! Saludos

  10. Rafa

    Hola. Tengo un problema.

    Al momento de realizar el head tuve que desactivar la opción de «Generación de Archivo CSS Estático» para solucionar un glich que me causó al intentar la alineación de los elementos, lo resolví de otro modo, pero al volver a activar la opción «Generación de Archivo CSS Estático» todos los estilos CSS de los diseños de mis páginas se desactivaron y los cambios que haga en estas con relación a apariencia de los módulos no se ven reflejados en la web solo en el editor.

    Sabes a qué se puede deber esto y cómo solucionarlo. De antemano Gracias.

    Responder
    • Oscar Viedma

      Hola Rafa, lo recomendable es mantener desactivada la opción de Generación de CSS Estático, después eso lo solucionas con otro plugin de cache como Autoptimize o algún otro. Muchas veces esa opción suele dar problemas con ciertos hosting, así que es mejor desactivarla.

      Responder
      • Rafa

        Muchas gracias porctu ayuda.

        Ya logré resolver el problema. ¡Eres mejor!

        Responder
  11. Ignacio

    Buenas, sigo tus consejos y me ha venido super bien para mejorar mi pagina, pero me encuentro encallado y no se como resolver.
    He realizado todos los pasos para cambiar logo al hacer scroll y me cambiar el tipo de letra y colores, pero me gustaría dejar el menu fijo para ipad y moviles.
    Como debo hacerlo? Lo tenía así configurado en divi, pero al cambiar css y codigo no soy capaz.

    Muchas gracias por adelantado.
    Saludos,
    Ignacio Santolaria

    Responder
    • Oscar Viedma

      Hola Ignacio qué tal, este mismo efecto lo puedes replicar con las opciones sticky de divi, aquí tengo un tutorial.

      Al replicarlo con las opciones sticky puedes cambiar los valores para cada resolución (escritorio, tabletas, teléfonos). Seguro con este nuevo método lo logras 💪

      ¡Un abrazo!

      Responder
  12. Victòria

    Hola Oscar!
    Qué tal? Una pregunta, sería posible agregar los botones sociales al menú hamburguesa? Es decir, imagínate que en lugar del botón tenemos un módulo de social icons… se podría hacer que en la versión móvil se colocasen debajo del menú también? O el módulo buscar, no sé, cualquier otro elemento!
    Gracias!

    Responder
    • Oscar Viedma

      Hola Victoria, sí es posible, en lugar de usar el módulo botón usas el módulo de seguir en medios sociales de divi.

      Para colocarlo en responsive podrías hacerlo con iconos de FontAwesome, en los menús colocarías los iconos el código de los iconos de FontAwesome.

      Recuerda que debes sincronizar la librería con tu web para que detecte los iconos de dicha librería.

      Si quieres insertar cualquier otro módulo de divi en un menú, puedes hacerlo mediante un shortocode:

      1. Instalas Shortcode for Divi.
      2. Instalas este otro plugin para introducir cualquier shortcode en los menús de wordpress.
      2. Añades un módulo desde Divi > Biblioteca de divi
      3. Copias el shortcode del módulo que te generó y lo pegas en tu menú.

      Responder
      • victoria

        Muchas gracias Oscar! Haciendo pruebas conseguí insertar los iconos sociales en el menú secundario (tripadvisor incluido!), pero ahora no sé como alinearlos en la misma fila una vez haga el menú hamburguesa!

        Responder
        • Oscar Viedma

          Me compartes tu sitio y te ayudo con eso Victoria 🙂

          Responder
  13. Mario

    Hola Oscar, excelente tu video tengo dos problemas espero me ayudes a solucionar.
    1. como puedo poner dos o mas menus hechos en Apariencias/menus y cuando se visualice en tablet o movil se pueda vizualizar en un solo menu hamburguesa.
    2 todos los cambio hechos en DIVI generador de temas no se visualizan en ningun navegador.

    saludos,
    Mario

    Responder
    • Oscar Viedma

      Hola Mario qué tal,

      1. Desde apariencia > temas creas los menús que quieras y desde el generador de temas diseñas tus menús usando el módulo menú y asignándole el menú correspondiente. Para que se muestren las opciones de más de un menú en el mismo menú hamburguesa en móvil, te recomiendo crear otro menú que debes ocultar para escritorio y solo mostrarlo en móvil.

      2. Desactiva la generación de css estático desde Divi > Opciones del tema > Constructor > Avanzado…

      Responder
  14. Jesus

    Lo primero gracias por el tutorial. Tengo el mismo problema que el compañero Karwin y el compañero Jonathan. yo tengo un Mega Menú con 3 niveles. He seguido el tutorial para colapsar 2 niveles pero no se como hacer para un tercer nivel. Pueden ver lo que sucede en la versión móvil en http://www.masquesuelas.es ¿Me podrían ayudar? Gracias

    Responder
    • Oscar Viedma

      Hola Jesús, no hay respuestas de Karwin y Jonathan en este tutorial amigo. Si quieres dejar fija en la parte superior más de una sección puedes usar los efectos sticky de divi. Aquí tengo un tutorial que te puede ayudar.

      Responder
  15. Daniel

    Hola Oscar, gracias por el tutorial, me ha ayudado mucho con mi incursión en este mundo web.

    Te comento que lo implemente como lo indicas y funciona perfecto en todas las paginas estáticas, sin embargo cuando entro en una página dinámica el menú hamburguesa se alinea a la izquierda y no muestra la «X» al desplegarse

    ¿Existe algún elemento que me permita corregir ese error?

    De antemano te agradezco el apoyo

    Responder
    • Oscar Viedma

      Hola Daniel qué tal, ¿A qué páginas te refieres con páginas dinámicas? Compárteme la url de tu web y le doy un vistazo al detalle que mencionas.

      Saludos.

      Responder
  16. Adexe

    Buenas Oscar
    Hace poco que he encontrado tu canal y me gusta bastante como explicas.
    Tengo una duda, he seguido todos tus pasos, pero resulta que nos e porqué cuando voy haciendo la pantalla más pequeña el menú se convierte en doble empujando tanto el logo y el botón hasta que entra en la versión móvil.
    Que puede ser,? no veo que te a ti te pase en el ejemplo.

    Saludos

    Responder
    • Oscar Viedma

      Hola Adexe, no sé si continuas con este problema, disculpa por responder hasta ahora. Si el problema aún persiste compárteme la url de tu ejercicio y con gusto lo reviso.

      Saludos.

      Responder
  17. Adexe Díaz

    Buenas Oscar

    excelente tutorial !!

    Tengo un problema, he seguido todos tus pasos, pero le menú al achicar la pantalla en escritorio llega un momento que el menú forma dos filas antes de pasar al menú de hamburguesa. Además el logo se agranda un poco también. He eliminado otros códigos que tengo en el personalizador de temas por si estuviese afectando, pero no es….

    Me podrías ayudar con este tema porfa, me estoy volviendo loco.
    gracias !

    Responder
  18. Daniel

    Hola Oscar, eres un grande! Muchas gracias por dar tanta información.
    He seguido todos los pasos de este tutorial y me ha funcionado todo…

    En mi caso, al principio el menú hamburguesa, en móvil y tablet, arranca de color blanco dado que tiene un background oscuro.

    Sin embargo, lo que yo hice fue darle FIXED al cuadrado verde en DIVI, no al azul, ya que no me interesaba que el background se viniera conmigo al hacer scroll… Pero debajo, la página tiene fondo blanco…

    Me encantaría que al hacer scroll, agregarle un background oscuro y semi transparente a la sección verde de DIVI, pero si es mucha molestia, aunque sea me podrías decir cómo cambiar el color del menú harmburguesa de blanco a negro al hacer scroll por favor?

    Gracias! Saludos desde Argentina

    Responder
    • Oscar Viedma

      Hola Daniel qué tal, gracias.

      A ver compárteme la url de tu ejercicio para ver que podemos hacer 🙂

      Responder
  19. Daniel M

    Hola Oscar!
    gracias por tu ayuda siempre,
    mi consulta en este caso es como darle estilos personalizados si añadimos al botón call to action (.btn) un par de enlaces secundarios (hacer que el .btn tenga dos subelementos) pero que no hereden estilos del botón primario, ya que al añadir elementos secundarios hereda el estilo y queda fatal.

    Muchas gracias por tu ayuda!

    Daniel.

    Responder
    • Oscar Viedma

      Hola Daniel, habría que inspeccionar la clase única para el botón primario y la clase única para el botón secundario y aplicar los estilos a su respectiva clase.

      Responder
  20. Miguel

    Hola Oscar!
    Sencillamente excelentes tus tutoriales, muchas gracias!
    Viendo este tengo una web (en realidad varias) donde quisiera que en escritorio sólo se vieran las 3 rayitas del menú y al clickear éste se vea como uno normal con una x donde estaban las 3 rayitas o hamburguesa, o sea combinar el comportamiento de celulares en escritorio en forma horizontal, se entiende ?
    *al clickear en una sección este se cierre nuevamente a menú hamburguesa, tienes ya algo así donde pueda inspirarme para poder realizar lo que digo?

    Responder
  21. Miguel

    Gracias Oscar, muy amable!!!
    Lo voy a ver e investigar porque lo que quiero hacer es que quede gráficamente como el menú por defecto, o sea horizontal y arriba pero: que se pueda ocultar y mostrar con las 3 rayitas.

    Gracias de nuevo!!!

    Responder
  22. Gema

    Hola Oscar!

    Me ha encantado el menú.
    Pero me ha surgido un problemilla: el menú en el móvil se superpone a la cabecera pese a haber introducido el código.
    Cómo podría solucionarlo?

    Responder
  23. marco molina

    y si por ejemplo quiero que el menú siga en el formato de «habilitar diseño de la caja» que viene en la sección de apariencia>personalizar>ajustes generales>ajustes de formato> y que no sea menu fullwith como viene en tu video, como seria el código?, me refiero al videotutorial de «Crear un menú fijo con el divi theme builder que cambie o reduzca su tamaño al hacer scroll»

    Responder
    • Oscar Viedma

      Marco qué tal, si te funcionó el código que te compartí por el chat de soporte premium?

      Responder
  24. Neustadt

    ¡Hola a todos! ¡Qué tutorial más útil! He estado buscando cómo hacer que mi menú se vea más elegante al desplazarme por la página y esto es justo lo que necesitaba. ¡Gracias por compartir estos fragmentos de código y los trucos útiles!

    Una pregunta para quienes ya han implementado este efecto en sus sitios: ¿han encontrado algún problema inesperado al hacerlo? Me encantaría escuchar sus experiencias y cómo las resolvieron. ¡Saludos!

    Responder
    • Oscar Viedma

      Gracias, espero te pueda servir.

      Si tienes algún problema me dices y lo revisamos.

      Saludos

      Responder
  25. Marianne Perez

    Hola no me sale el menu hamburguesa alineado a la izquierda. mi proyecto es distercapital.com

    Responder
    • Oscar Viedma

      Hola Marianne, estoy revisando tu web. ¿Deseas tener el icono del menú hamburguesa de lado izquierdo y el logo de lado derecho?

      No entiendo muy bien que es lo que necesitas alinear a la izquierda 😬

      Responder
      • Marianne

        Hola si hice todos los pasos y me salía el menú hamburguesa al lado del botón es decir no se dezplazaba totalmente a la derecha pero creo ya lo he arreglado.

        Responder
        • Oscar Viedma

          Excelente Marianne, si tienes algún otro problema me lo haces saber.

          Un abrazo.

          Responder
  26. Natalia

    Hola! Me ha servido mucho este tutorial, la verdad que está muy bien explicado, pero me gustaría saber si hay alguna forma de dejar de hacer fijo el menú en tablet y móvil. Muchas gracias

    Responder
    • Oscar Viedma

      Hola Natalia, ¿no quieres fijo el menú en tableta y móvil? ¿Cual es el link de tu web? Para inspeccionarlo y mencionarte que tienes que hacer…

      Responder

Trackbacks/Pingbacks

  1. Cómo darle estilos o personalizar el sub menú desplegable del módulo menu divi - OV DIVI - […] realizar este ejercicio vamos a usar el menú que creamos en el tutorial anterior, si no lo haz visto…

Enviar un comentario

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

Tutoriales Exclusivos

Tutoriales exclusivos OV Divi

Lleva tus sitios web creados con divi al siguiente nivel.

Accede a tutoriales exclusivos y únicos de divi y saca el máximo provecho del mejor tema y constructor visual para WordPress.

$10 USD / mes

Pin It on Pinterest