Como implementar un menu personalizado con CSS y Javascript en Divi
David Bustos
Desde hace unos años Divi el maquetador visual más popular para wordpress, implementó dentro de sus nuevas características la funcionalidad de realizar menús personalizables usando cualquier estructura. Sin embargo muchas personas siguen sin entender cómo se puede hacer uso de esta característica.
css | Divi | javascript | menu | personalizar | web | wordpress

valora tus conocimientos y nunca dudes de tus capacidades

No se encontraron resultados

La página solicitada no pudo encontrarse. Trate de perfeccionar su búsqueda o utilice la navegación para localizar la entrada.

Como implementar un menu personalizado con CSS y Javascript en Divi

Desde hace unos años Divi el maquetador visual más popular para wordpress, implementó dentro de sus nuevas características la funcionalidad de realizar menús personalizables usando cualquier estructura. Sin embargo muchas personas siguen sin entender cómo se puede hacer uso de esta característica.

Nuestro menú principal dentro del sitio kimera.glassmarket.com.co está construido usando esta característica. Sin embargo hacemos uso de código CSS y JavaScript usando Jquery para darle movilidad e interacción al menú. Si estas interesado en aprender cómo realizar tu propio menú personalizado dentro de Divi usando CSS y JavaScript quédate que ya empezamos.

  • Como primer paso después de iniciar sesión en nuestro wordpress, debemos dirigirnos al menú , y dirigirnos hacia donde dice Divi > Generador de temas
  • Una vez allí dentro de la nueva ventana podrás decidir en qué partes de tu sitio web aplicara el nuevo menú que vamos a crear. Divi nos permitiría hasta crear un menú personalizado por página, o en su caso para cada categoría de un artículo. Como en nuestro caso solo crearemos un menú para todo el sitio, es decir para todas las páginas y subpáginas.  Daremos clic donde dice “crear nueva plantilla”. Y una vez se desplieguen las opciones, le diremos “Todas las paginas”. (para que afecte a todo el sitio, si no es tu caso y deseas tu menú solo para una página en específico, lo que debes hacer  es escoger “página específica y luego el nombre de la página”).

    Una vez seleccionado le debemos dar en el botón «Crear plantilla».

paso 2
  • Ahora se creara una nueva plantilla bajo el nombre “Todas las paginas”, que estará conformado por tres campos. Agregar (Encabezado, cuerpo o pie de página). Es aquí donde podremos crear el nuevo menú que será un  encabezado así que damos clic en encabezado y nos dará unas opciones adicionales, las cuales si manejas Divi conocerás muy bien, de lo contrario selecciona “crear encabezado personalizado”.
paso 2
  • Ahora Divi nos dará las opciones básicas para empezar un diseño así que como será personalizado nuestro diseño de menú, escogeremos “Construir desde cero”.
paso 2
  • Como podemos ver Divi nos da las mismas opciones de diseño para crear una página, basado en secciones, filas, columnas, módulos. (en este paso ya deberías tener tu diseño definido para empezar a modelarlo).
paso 2
  • Para nuestro sitio web Kimeramultimedia.com decidimos usar un menú compuesto por varios submenús, algo así como un “supermenu”. El primero de ellos (Desarrollo web, marketing Digital, fotografía, nosotros, contáctanos), se mantendrá fijo, el segundo  menu (Área de clientes, afiliación, renovar producto, trabaja con nosotros) decidimos  debe tener una animación que permita “recogerse hacia el centro”,  siguiente a esto nuestro logo que esta al centro en una especie de triangulo invertido. Deberá tener una animación que le permitirá esconderse detrás del menu superior principal y salir de la ventana. Y por último nuestro  menu que tiene algunas de las marcas para las que trabajamos. Como se pueden dar cuenta tiene un botón estilo flecha para que nos sirva de botón para que este se despliegue cuando hagamos  clic en él. Así que debe estar detrás de todos los otros menús. Para este menu queremos que al recogerse detrás de todos los otros menús, sobresalga detrás de ellos un poco para que se pueda ver la parte inferior y saber que él está allí y que puede ser desplegado por el usuario cuando de clic en la flecha. Antes mencionada.
paso 2
  • Se supone que para haberte interesado este tema, de seguro ya has creado algún diseño en Divi y conoces sus funcionalidades. Por lo que te estarás preguntando ¿Cómo hacer todo lo anteriormente propuesto con el menu si Divi no trae por defecto la manera de poder realizarlo? La respuesta como ya les había dicho es usando CSS y JavaScript. Asi que manos a la obra que aquí empieza lo bueno.
  • Como sabemos JavaScript para reconocer un elemento de HTML debe tener un nombre o ID para poder referenciarnos a él y manipular sus propiedades posteriormente, así que eso será justamente lo que empezaremos hacer. Darle un nombre a cada parte de nuestros menús que deseamos manipular para darle animación posteriormente. Esto lo lograremos yendo a las configuraciones de cada fila en Divi yendo a la pestaña AVANZADO y luego en ID Y CLASES CSS. Yo solo les mostrare como hacerlo con uno de los elementos del menu. Pero para cada elemento que quieran animar en el menu deberán especificarle un ID.
paso 2
  • Después de marcar las filas con sus respectivos ID los de nuestro menu fueron 3 que quedaron nombrados de la siguiente manera.

1) barraAux1Área de clientes, afiliación, renovar producto, trabaja con nosotros«)

2) logoPrincipal («Triangulo con el logo»)

3) megaMenu (menu con las marcas de nuestros clientes destacados)

 

  • Ya que están marcados con su respectivo ID podemos referenciarlos a través de código y JavaScript sabrá que existen y los podremos manipular. El mejor Sitio Que Divi tiene para escribir código, es en el menu de wordpress, luego en El ítem Divi, luego en opciones del tema y por último en la pestaña integración. Así que vamos allí.
paso 2
paso 2
  • Una vez allí nos dirigiremos al cuadro de código que Divi pone a nuestra disposición. En la parte que dice “Agregar código al <HEAD> de su blog”. Aquí será donde escribiremos nuestro código para animar nuestro menu personalizado.
paso 2
  • A ustedes les aparecerá completamente vacío si aún no han implementado  algún código. Como nuestra página en Divi es personalizada. Tengo algunos códigos mas ya implementados por lo que me aparecen. Lo más importante de este cuadro de código es mantenerlo organizado y debidamente seccionado para poder acudir a él cuándo lo necesitemos sin que todo este revuelto y ni nosotros mismos lo entendamos.
  • Como sería casi interminable explicarles la implementación de todo el menu, les explicare a detalle tan solo la animación y el código usado para el logo que es el que está encerrado en una especie de triangulo e identificado con el ID “logoPrincipal”, el resto de la implementación para los otros menús será igual solo que cambiara la posición y el tipo de animación que se deberá especificar en el CSS.
paso 2
  • Lo que haremos con el logo será controlar el “scroll” que el usuario realiza sobre la página y cuando este llegue a un determinado punto, este se esconda o aparezca en el menu. (Para verlo en funcionamiento y entender que es lo que haremos con él. Puedes visitar nuestro sitio principal kimera.glassmarket.com.co )

 

  • Empecemos pues capturando el valor del «scroll» que el usuario ejecutara cuando se desplace por la página. Esto lo haremos con la siguiente función  de Jquery que solo debemos invocarlo ya que por defecto Divi ya lo trae integrado

 

paso 2
  • Ahora que tengo el valor del “scroll valido si es igual al punto en el que yo quiero que desaparezca el menu en mi caso el valor fue 600 que me pareció correcto”, y luego defino una variable llamada auxi1 con un valor de 1 que más adelante me indicara si este logo ya fue oculto o no, para hacer su proceso contrario ósea aparecerlo.

 

paso 2
  • Luego de comprobar que el “scroll” ejecutado por el usuario es mayor a 600, es hora de sacar el logo de la página con una transición suave y una duración especifica también con un poco de “delay”. Y para eso usamos JavaScript referenciando el ID que previamente le asignamos en las opciones avanzadas de Divi el cual llamamos “logoPrincipal”. Ustedes pueden cambiar cualquiera de esos valores incluyendo la dirección y lograr cualquier efecto que quieran.

 

paso 2
  • A continuación, comparto con ustedes todo el código que definí para nuestro menú principal en Kimeramultimedia.com haciendo uso de media querys y teniendo en cuenta la implementación de un menú totalmente diferente para la versión móvil que también se creó con Divi.

    Espero les sea de utilidad para sus proyectos futuros.

    Un abrazo y bendiciones.

 

CODIGO COMPLETO DEL MENU PERSONALIZADO

<!–///////////////////////////////////////////////////////////////////////////////////////////////////////////////////–>

<!–Animaciones del menu principal en Kimera–>
<script>
jQuery(function($){

var auxi1=0;
var auxiMovil = 0;

// Aqui estoy sacando el megamenu del layout para luego hacerlo visible
$( «#megaMenu» ).css(
{
«transform»: «translateY(-280%)»,

}
);

// Aqui estoy sacando el boton del megamenu del layout para luego hacerlo visible
$( «#botonMegaMenu» ).css(
{
«transform»: «translateY(-450%)»

}
);

// FUNCIONES EXCLUSIVAS MENU MOVIL//
// Aqui estoy sacando el menuMovil del layout para luego hacerlo visible
$( «#MenuMovil» ).css(
{
«transform»: «translateY(-280%)»,

}
);

// Aqui estoy sacando el menuMovil-bajo del layout para luego hacerlo visible
$( «#menu-bajo» ).css(
{
«transform»: «translateY(250%)»,

}
);
//————————————————————————

$(«#iconoM»).click(function(){

if(auxiMovil==0)
{
auxiMovil=1;
$( «#MenuMovil» ).css(
{
«transform»: «translate(0,-2%)»,
«transition-duration»: «1s, 3s»,
«transition-delay»: «0s»
}
);

$( «#menu-bajo» ).css(
{
«transform»: «translate(0,0%)»,
«transition-duration»: «1s, 3s»,
«transition-delay»: «0s»
}
);
}

else if(auxiMovil==1)
{

$( «#MenuMovil» ).css(
{
«transform»: «translate(0,-280%)»,
«transition-duration»: «1s, 3s»,
«transition-delay»: «0s»
}
);

$( «#menu-bajo» ).css(
{
«transform»: «translate(0,250%)»,
«transition-duration»: «1s, 3s»,
«transition-delay»: «0s»
}
);

auxiMovil=0;
}

});
/////////////////////////////////// FIN MENU MOVIL

$(document).on(«scroll», function(){
//sacamos el desplazamiento actual de la página
var desplazamientoActual = $(document).scrollTop();

//compruebo si debo Ejecutar la animacion del menu
if(desplazamientoActual > 600)
{
auxi1=1;

$( «#logoPrincipal» ).css(
{
«transform»: «translate(0,-160px)»,
«transition-duration»: «3s, 5s»,
«transition-delay»: «2s»
}
);

$( «#barraAux1» ).css(
{
«transform»: «scaleX(0)»,
«transition-duration»: «3s,5s»
}
);

$( «#megaMenu» ).css(
{
«transform»: «translateY(-240%)»,
«transition-duration»: «3s,5s»,
«transition-delay»: «3s»
}
);

$( «#botonMegaMenu» ).css(
{
«transform»: «translateY(-350%)»,
«transition-duration»: «3s,5s»,
«transition-delay»: «3s»
}
);
}

//compruebo si debo normalizar el menu
if(desplazamientoActual == 0 && auxi1==1){

// Aqui estoy sacando el megamenu del layout para luego hacerlo visible
$( «#megaMenu» ).css(
{
«transform»: «translateY(-280%)»,
«transition-delay»: «0s»
}
);

// Aqui estoy sacando el boton del megamenu del layout para luego hacerlo visible
$( «#botonMegaMenu» ).css(
{
«transform»: «translateY(-450%)»,
«transition-delay»: «0s»
}
);

$( «#logoPrincipal» ).css(
{
«transform»: «translate(0,0)»,
«transition-duration»: «3s, 5s»,
«transition-delay»: «0.5s»
}
);

$( «#barraAux1» ).css(
{
«transform»: «scaleX(1)»,
«transition-duration»: «3s,5s»
}
);
}
});

/* esta funcion se ejecuta cuando se hace click en la flecha del menu contraido en pc */
$(document).ready(function(){
$(«#flecha»).click(function () {

//alert(«has hecho click en el párrafo»);

// Aqui estoy sacando el megamenu del layout para luego hacerlo visible
$( «#megaMenu» ).css(
{
«transform»: «translateY(-155%)»,
«transition-duration»: «3s,5s»,
«transition-delay»: «0s»
}
);

// Aqui estoy sacando el boton del megamenu del layout para luego hacerlo visible
$( «#botonMegaMenu» ).css(
{
«transform»: «translateY(-220%)»,
«transition-duration»: «3s,5s»,
«transition-delay»: «0s»
}
);
});

});

});
</script>
<!–///////////////////////////////////////////////////////////////////////////////////////////////////////////////////–>

My Servicios

Estas son alguna s de las áreas en las que te puedo orientar.

Desarrollo Web

Todo lo relacionado con la web, desarrollo de sitios web personales, institucionales, corporativos y tiendas Online.

Software

Si quieres asesoría sobre algún software en específico o si deseas que desarrolle un software único para tu idea de negocio. .
I

Streaming

Transmisiones en vivo profesionales para cualquier tipo de evento en las plataformas de streaming más reconocidas, o en servicio RTMP bajo Oracle Cloud personalizados..

Desarrollo de aplicaciones móviles

Desarrollo de aplicaciones nativas para Android y ios, bajo react native, la tecnología que usa Facebook en sus aplicación y su sitio web. .

Recent Homes

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In hac habitasse platea dictumst. Morbi suscipit dui id magna condimentum facilisis.Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.

Get Started

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In hac habitasse platea dictumst. Morbi suscipit dui id magna.