Cerrar video

Cómo crear un botón Call-to-Action Dropdown (botón desplegable) en Divi sin plugins

por | May 1, 2025 | Tutorial gratuito | 0 Comentarios

En el diseño web moderno, optimizar el espacio y mejorar la experiencia de usuario son aspectos fundamentales. Una técnica efectiva para conseguirlo es implementar botones call-to-action (CTA) que, al interactuar con ellos, desplieguen un menú con opciones adicionales. En este tutorial, te mostraré cómo crear un elegante botón CTA con menú desplegable en Divi sin necesidad de plugins adicionales ni conocimientos avanzados de programación (Ver demo).

Cómo crear un botón Call-to-Action Dropdown (botón desplegable) en Divi sin plugins

¿Qué vamos a construir?

Crearemos un botón call-to-action que, al pasar el cursor por encima (en escritorio) o al tocarlo (en dispositivos móviles), desplegará un menú con varias opciones. Además, añadiremos un pequeño detalle visual: el icono del botón rotará para indicar que el menú está activo.

Características principales:

  • Funciona perfectamente en dispositivos de escritorio y móviles
  • Utiliza el módulo de botón nativo de Divi
  • Animaciones suaves de apertura y cierre
  • Rotación del icono al activarse
  • Personalizable con CSS
  • Compatible con cualquier página de Divi

Beneficios de implementar este elemento en tu sitio web

  • Ahorro de espacio: Mantén tu diseño limpio y ordenado al ocultar opciones secundarias hasta que el usuario las necesite.
  • Mejor experiencia de usuario: Proporciona una navegación intuitiva y moderna.
  • Mayor tasa de conversión: Destaca tu CTA principal mientras ofreces opciones alternativas.
  • Diseño responsivo: Funciona perfectamente en todos los dispositivos.
  • Diferenciación: Añade un elemento interactivo que destaque tu sitio web.

¿Cómo lo construiremos?

El proceso se divide en cuatro partes principales:

1. Primeros pasos: Crearemos el botón utilizando el módulo «botón» nativo de Divi.

2. Menú dropdown: Construiremos el menú desplegable utilizando el siguiente fragmento de código HTML:

<a href="#" class="ov-menu-item">Cómo trabajamos</a>
<div class="ov-separator"></div>
<a href="#" class="ov-menu-item">Ver servicios</a>
<div class="ov-separator"></div>
<a href="#" class="ov-menu-item">Consulta gratuita</a>
<div class="ov-separator"></div>
<a href="#" class="ov-menu-item">Contáctenos</a>

3. Aplicación de estilos CSS: Daremos formato al menú desplegable y añadiremos las animaciones con el siguiente código CSS:

.ov-dd-menu {
  position: absolute;
  top: 100%;
  left: 0;
  width: 215px;
  background-color: white;
  border-radius: 6px;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15);
  margin-top: 12px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-10px);
  transition: all 0.3s ease;
  z-index: 100;
  overflow: hidden;
}

.ov-dd-menu.ov-active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.ov-dd-menu .ov-menu-item {
  font-size: 14px;
  padding: 12px 16px;
  display: block;
  color: #151316;
  text-decoration: none;
  transition: background-color 0.2s ease;
}

.ov-dd-menu .ov-menu-item:hover, .ov-dd-menu .ov-menu-item:active {
  background-color: #8870ff;
  color: #fff;
}

.ov-dd-menu .ov-separator {
  height: 1px;
  background-color: #eaeaea;
  margin: 0;
}

#ovCtaButton.ov-active-btn:after {
  transform: rotate(180deg);
  transition: transform 0.3s ease;
}

#ovCtaButton:after {
  transition: transform 0.3s ease;
}

4. Funcionalidad con JavaScript: Implementaremos la lógica para mostrar/ocultar el menú en distintos dispositivos y la rotación del icono con el siguiente código JavaScript:

<script>
document.addEventListener('DOMContentLoaded', function() {
    const ctaButton = document.getElementById('ovCtaButton');
    const dropdownMenu = document.getElementById('ovDropdownMenu');
    let menuOpen = false;
    
    const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
    
    // Función para activar el menú y rotar el icono
    function activateMenu() {
        dropdownMenu.classList.add('ov-active');
        ctaButton.classList.add('ov-active-btn'); // Añadimos esta clase al botón
    }
    
    // Función para desactivar el menú y restaurar el icono
    function deactivateMenu() {
        dropdownMenu.classList.remove('ov-active');
        ctaButton.classList.remove('ov-active-btn'); // Quitamos la clase del botón
    }
    
    // En dispositivos de escritorio (no táctiles)
    if (!isTouchDevice) {
        // Mostrar menú al hacer hover
        ctaButton.addEventListener('mouseenter', function() {
            activateMenu();
        });
        
        // Ocultar menú al salir del área del botón y del menú
        ctaButton.addEventListener('mouseleave', function(event) {
            const toElement = event.relatedTarget;
            if (!dropdownMenu.contains(toElement)) {
                deactivateMenu();
            }
        });
        
        // Mantener menú visible mientras el cursor esté sobre él
        dropdownMenu.addEventListener('mouseenter', function() {
            activateMenu();
        });
        
        // Ocultar menú al salir de él
        dropdownMenu.addEventListener('mouseleave', function() {
            deactivateMenu();
        });
    } 
    // En dispositivos táctiles
    else {
        // Toggle del menú al tocar el botón
        ctaButton.addEventListener('click', function(event) {
            event.preventDefault(); // Prevenir la navegación si el botón es un enlace
            menuOpen = !menuOpen;
            
            if (menuOpen) {
                activateMenu();
            } else {
                deactivateMenu();
            }
        });
        
        // Cerrar menú al tocar fuera
        document.addEventListener('click', function(event) {
            const isClickInside = ctaButton.contains(event.target) || 
                                 dropdownMenu.contains(event.target);
            
            if (!isClickInside && menuOpen) {
                deactivateMenu();
                menuOpen = false;
            }
        });
        
        // Cerrar menú al seleccionar una opción
        const menuItems = document.querySelectorAll('.ov-menu-item');
        menuItems.forEach(item => {
            item.addEventListener('click', function() {
                deactivateMenu();
                menuOpen = false;
            });
        });
    }
});
</script>

En el vídeo tutorial que acompaña a este artículo, te guiaré paso a paso por todo el proceso, mostrándote exactamente cómo configurar cada elemento para lograr un resultado profesional y efectivo.

Conclusión

Implementar un botón CTA con menú desplegable es una excelente manera de mejorar la usabilidad de tu sitio web construido con Divi. Esta solución no solo es visualmente atractiva, sino que también mejora la experiencia del usuario y puede aumentar tus conversiones al proporcionar opciones adicionales sin saturar tu diseño.

¡No te pierdas este increíble vídeo tutorial donde te muestro paso a paso cómo implementar esta solución en tu sitio web con Divi!

¿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

0 comentarios

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